关于java的多线程的成员变量是否线程安全的疑问?
大家讲道理
大家讲道理 2017-04-18 10:49:12
0
14
1508

对于下面的程序:

public class MyThread extends Thread{
    private Object obj;
    ......
}

请问,这个MyThread里面的成员变量,是不是线程安全的?

因为,MyThread继承了Thread,其使用方式为:new MyThread().start();
所以,这就意味着,每次都是new了新对象,那么,他里面的各个成员变量就是这个对象自己拥有的,所以,是安全的。
我这样理解有问题吗?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(14)
左手右手慢动作

スレッド セーフティの概要は、複数のスレッドが同じオブジェクトにアクセスするときに、ランタイム環境でこれらのスレッドのスケジューリングと代替実行を考慮する必要がない場合、呼び出し側で追加の同期やその他の調整を行う必要がないことを意味します。 . このオブジェクトに対する操作と呼び出しでは、正しい結果が得られます。
マルチスレッドの安全性の判断は以下の3つのポイントから分析できます:

リーリー

複数のスレッドが共有データを操作する場合、スレッドの安全性の問題を考慮する必要があります。

いいねを押す +0
黄舟

あなたが言及した状況は、あなた自身のスレッドでのみ使用されるため、間違いなくスレッドセーフです。

いいねを押す +0
阿神

あなたの理解は正しいです。new MyThread().start() 新しい Thread オブジェクトを使用してスレッドを開始するたびに、共有動作は行われないため、スレッドセーフであり、最も多くの投票を受けた回答です

リーリー
いいねを押す +0
巴扎黑

簡単な例です
他の人が食べたいキャンディーがある場合、それは安全ではないため、箱と鍵をかけて閉じ込める必要があることに気づきました

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート