我有创建2个线程,这两个线程内一个Java程序,他们要更新全局变量abc
不同的价值,让我们说整数1和整数3.Java的多线程访问同一个变量
比方说,他们执行在同一时间码(在相同milisecond),例如:
public class MyThread implements Runnable{
public void run(){
while(true){
if (currentTime == specificTime){
abc = 1; //another thread update abc to 3
}
}
}
}
在这种情况下,我们怎么能确定变量abc
的结果呢?我非常好奇操作系统如何安排执行?
(我知道应该同步使用,但我只是想知道自然的系统将如何处理这种冲突问题。)
你应该阅读关于锁定。 http://msdn.microsoft.com/en-us/magazine/cc163744.aspx –
@Aubin在java中写入和读取原语IS原子,只有'long'和'double'不是原子的。他的问题是阅读和写作不是原子操作。 –