JVM授命重排的例子
JVM指令重排的例子amountA amountA - 50committed trueamountB amountB + 50这时候打印出来的值
JVM指令重排的例子
amountA = amountA - 50; committed = true; amountB = amountB + 50;
这时候打印出来的值可能就是 A = 50, B = 100 .
要解决这个问题,就要给doTransfer()和printAccountsWhenDone()都加上syncrhonzied关键字,当t1执行doTransfer时t2必须等待,等t1执行完后t2再去获取A和B的值,即使doTransfer()内部有指令重排,也不会有问题。