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 |