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

对于下面的程序:

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

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

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

大家讲道理
大家讲道理

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

membalas semua(14)
左手右手慢动作

Tinjauan keseluruhan keselamatan benang bermakna apabila berbilang benang mengakses objek yang sama, jika tidak perlu mempertimbangkan penjadualan dan jalan ganti benang ini dalam persekitaran masa jalan, tidak perlu melakukan penyegerakan tambahan atau melakukan apa-apa jika tidak pada operasi Penyelarasan pemanggil, memanggil gelagat objek ini boleh mendapatkan hasil yang betul.
Menilai keselamatan multi-threading boleh dianalisis daripada tiga perkara berikut:

1.明确哪些代码是多线程运行的代码, 
2.明确共享数据,
3.明确多线程运行代码中哪些语句是操作共享数据.

Jika berbilang rangkaian beroperasi pada data yang dikongsi, isu keselamatan rangkaian mesti dipertimbangkan.

黄舟

Situasi yang anda nyatakan pastinya selamat untuk thread, kerana ia hanya digunakan oleh thread anda sendiri.

阿神

Pemahaman anda betul, new MyThread().start() Setiap kali objek Thread baharu digunakan untuk memulakan utas, tiada tingkah laku perkongsian, jadi ia selamat untuk thread, jawapan yang paling banyak diundi

MyThread mt = new MyThread(); // 这里只 new 了一个对象,然后多线程操作,会存在线程安全问题
new Thread(mt).start();
new Thread(mt).start();
new Thread(mt).start();

// MyRunable mr = new MyRunable();
// new Thread(mr).start();
// new Thread(mr).start();
// new Thread(mr).start();
巴扎黑

Contoh mudah
Jika anda mempunyai gula-gula dan orang lain mahu memakannya, maka ia tidak selamat, jadi anda mendapati bahawa anda memerlukan kotak dan kunci untuk menguncinya

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan