小编jav*_*ava的帖子

synchronized关键字如何在内部工作

我阅读了以下程序并在博客中回答.

int x = 0;
boolean bExit = false;
Run Code Online (Sandbox Code Playgroud)

线程1(未同步)

x = 1; 
bExit = true;
Run Code Online (Sandbox Code Playgroud)

线程2(未同步)

if (bExit == true) 
System.out.println("x=" + x);
Run Code Online (Sandbox Code Playgroud)

线程2是否可以打印" x=0"?
Ans:是(原因:每个线程都有自己的变量副本.)

你怎么解决它?
Ans:通过使用make两个线程在一个公共互斥锁上同步或使两个变量都是volatile.

我的疑问是:如果我们将2变量设置为volatile,那么2个线程将共享来自主存储器的变量.这是有道理的,但是在同步的情况下如何解决它,因为线程都有自己的变量副本.

请帮我.

java multithreading

3
推荐指数
1
解决办法
844
查看次数

标签 统计

java ×1

multithreading ×1