为了账号安全,请及时绑定邮箱和手机立即绑定

如果在MyThread类(继承Thread)中将变量声明为static,线程实例是不是也能共享资源了?

class MyThread extends Thread{

    static private int count = 5;

    void run(){

        ...

    }

}

MyThread mt1 = new MyThread();

MyThread mt2 = new MyThread();

MyThread mt3 = new MyThread();

mt1.start();

mt2.start();

mt3.start();


正在回答

4 回答

static表示这个类所有的对象都共享这个static

0 回复 有任何疑惑可以回复我~
#1

imooc_幕课网

static private int count = 5; 是private,你见过一个的private 修饰的成员被其他对象随便调用吗
2016-12-30 回复 有任何疑惑可以回复我~
#2

z_xiaoye 回复 imooc_幕课网

只是不能直接调用而已,可以通过方法访问
2017-02-05 回复 有任何疑惑可以回复我~

得到的结果是正确的 ,我也不知道原理是什么

0 回复 有任何疑惑可以回复我~
#1

特南克斯

如果不加 static,那么 new 出来三个对象就有三个 count 属性。每个线程有一个。但是如果是有 static 关键字。不管 new 多少个对象,不管是通过类调用还是对象调用。都只有一个 count 属性。所有的线程访问的也都是这同一个
2018-11-04 回复 有任何疑惑可以回复我~

代码运行是可以的啊,求原理是什么

0 回复 有任何疑惑可以回复我~
#1

syh6320

真的行吗?亲测不行呀!
2016-03-13 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

如果在MyThread类(继承Thread)中将变量声明为static,线程实例是不是也能共享资源了?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信