Topic: 多线程中同个对象的问题。。

  Print this page

1.多线程中同个对象的问题。。 Copy to clipboard
Posted by: Jakie
Posted on: 2005-02-18 23:12

多线程同时打开同一个对象的时候 此对象中的数据 会不会受到各个线程的影响?
那静态对象呢?

2.Re:多线程中同个对象的问题。。 [Re: Jakie] Copy to clipboard
Posted by: cnfree
Posted on: 2005-02-18 23:48

这涉及到了线程同步的问题,你应该好好看看 Java线程 这本书,还要注意一下volatile这个java关键字,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。要解决这个问题,只需要像在本程序中的这样,把该变量声明为volatile(不稳定的)即可,这就指示JVM,这个变量是不稳定的,每次使用它都到主存中进行读取。一般说来,多任务环境下各任务间共享的标志都应该加volatile修饰。

3.Re:多线程中同个对象的问题。。 [Re: Jakie] Copy to clipboard
Posted by: 孤独王子
Posted on: 2005-02-18 23:54

不想一个对象的属性被不同县城更改的话,在更改这个属性的方法上使用synchronized关键字

4.Re:多线程中同个对象的问题。。 [Re: Jakie] Copy to clipboard
Posted by: rostone
Posted on: 2005-02-20 22:09

spec中对volatile是怎么说的?
很少用到这个修饰符


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923