课程
/后端开发
/Java
/深入浅出Java多线程
代码如图
把需要同步的代码 封装到方法中
两个线程为什么会打印相同的结果
2017-06-14
源自:深入浅出Java多线程 5-1
正在回答
解释:当线程1将piao()方法调入栈中执行时,线程2也将piao()方法调入栈中执行,但是由于piao()方法被锁所以线程2处于等待,然而此时线程2已经读取了内存中的 x 的值,所以当线程1执行完成虽然修改了 x 的值,但是由于线程2已经读取了 x 的值,所以修改后的 x 的值并没有被线程2读取。
注意:1、可以给x添加volatile修饰符,这样线程就能读取正确的值
2、一般情况下对于并发共享的类最好不要拥有状态,容易出现并发问题
慕粉9344391 提问者
慕UI1804229
举报
带你一起深入浅出多线程,掌握基础,展望进阶路线
2 回答synchronized修饰同步方法
2 回答同步,锁问题
2 回答关于两种方法创建线程的不同
1 回答关于yield方法
1 回答关于线程的join()方法