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