素材牛VIP会员
关于java的多线程的成员变量是否线程安全的疑问?
 多***悟  分类:Java代码  人气:1764  回帖:14  发布于6年前 收藏

对于下面的程序:

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

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

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

讨论这个帖子(14)垃圾回帖将一律封号处理……

Lv6 码匠
坐***来 技术总监 6年前#1

就单纯你说的这个情况,肯定是线程安全的,因为只有你自己线程使用.

Lv1 新人
何***孽 软件测试工程师 6年前#2

主要看你有没有访问某一个公共资源,lz这个问题,没有涉及到访问某个公共资源,所以谈不上安全不安全。

Lv5 码农
Co***ht 软件测试工程师 6年前#3

谢邀!
限定使用方式为new MyThread().start()的情况下是线程安全的。

Lv3 码奴
ch***az 职业无 6年前#4

虽然你声明的private但还是可以在另一个线程里读取该变量,在没有加同步锁的情况下就是线程不安全的。

题主想的这种线程安全的变量应该是在run方法里面声明的,这样的话对象就存在于线程工作内存里独享。
上一页12下一页
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取