读书人

JVM授命重排的例子

发布时间: 2013-03-28 10:20:24 作者: rapoo

JVM指令重排的例子

        amountA = amountA - 50;        committed = true;        amountB = amountB + 50;


这时候打印出来的值可能就是 A = 50, B = 100 .


要解决这个问题,就要给doTransfer()和printAccountsWhenDone()都加上syncrhonzied关键字,当t1执行doTransfer时t2必须等待,等t1执行完后t2再去获取A和B的值,即使doTransfer()内部有指令重排,也不会有问题。

读书人网 >编程

热点推荐