对于下面的程序:
public class MyThread extends Thread{
private Object obj;
......
}
请问,这个MyThread里面的成员变量,是不是线程安全的?
因为,MyThread继承了Thread,其使用方式为:new MyThread().start();
所以,这就意味着,每次都是new了新对象,那么,他里面的各个成员变量就是这个对象自己拥有的,所以,是安全的。
我这样理解有问题吗?
ringa_lee2017-04-18 10:51:12
스레드 안전성의 개요는 여러 스레드가 동일한 개체에 액세스할 때 런타임 환경에서 이러한 스레드의 예약 및 대체 실행을 고려할 필요가 없으면 추가 동기화를 수행하거나 다른 작업을 수행할 필요가 없음을 의미합니다. 그렇지 않으면 호출자 조정 작업에서 이 개체의 동작을 호출하면 올바른 결과를 얻을 수 있습니다.
멀티스레딩의 안전성을 판단하는 기준은 다음 세 가지로 분석할 수 있습니다.
공유 데이터에 대해 여러 스레드가 작동하는 경우 스레드 안전 문제를 고려해야 합니다.
阿神2017-04-18 10:51:12
당신의 이해가 맞습니다. new MyThread().start()
새로운 Thread 객체를 사용하여 스레드를 시작할 때마다 공유 동작이 없으므로 스레드로부터 안전하며 가장 많이 투표된 답변입니다
巴扎黑2017-04-18 10:51:12
간단한 예
당신이 가지고 있는 사탕이 있는데 다른 사람들이 그것을 먹고 싶어 한다면 그것은 안전하지 않기 때문에 그것을 잠글 상자와 자물쇠가 필요하다는 것을 알게 됩니다