线程同步问题,为何实例方法不行

lyxtime 发布于 2013/03/09 09:20
阅读 117
收藏 0
http://bbs.csdn.net/topics/390384588
加载中
0
爱吃大肉包
爱吃大肉包
发出来看看...
lyxtime
lyxtime
代码有个连接
0
震秦
震秦

我看了你的代码。

如果不加static,说明同步的是GZipThread对象,而你下面的代码:

GZipThread[] threads=new GZipThread[THREAD_COUNT];
        for(int i=0;i<threads.length;i++){
            threads[i]=new GZipThread(pool);
            threads[i].start();
        }
申请了很多个 GZipThread对象,每个GZipThread的incrementFilesCompressed是同步的,这样每个对象都一份内存。

而加了static incrementFilesCompressed则是GZipThread类方法,这样的方法不属于对象,在多个对象中也只有一份内存。

lyxtime
lyxtime
不加static ,即使每个对象的 incrementFilesCompressed方法都有一份内存,但filesCompressed字段是静态的,只有一份内存呀,多个对象共享这个类变量呀,???
0
lyxtime
lyxtime

引用来自“震秦”的答案

我看了你的代码。

如果不加static,说明同步的是GZipThread对象,而你下面的代码:

GZipThread[] threads=new GZipThread[THREAD_COUNT];
        for(int i=0;i<threads.length;i++){
            threads[i]=new GZipThread(pool);
            threads[i].start();
        }
申请了很多个 GZipThread对象,每个GZipThread的incrementFilesCompressed是同步的,这样每个对象都一份内存。

而加了static incrementFilesCompressed则是GZipThread类方法,这样的方法不属于对象,在多个对象中也只有一份内存。

不加static ,即使每个对象的  incrementFilesCompressed方法都有一份内存,但filesCompressed字段是静态的,只有一份内存呀,多个对象共享这个类变量呀,???
返回顶部
顶部