public void run() {
for (int i = 0; i < 3; i++) {
synchronized (this) {
this.fix(30);
try {
Thread.sleep(1);
} catch (final InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()
+ ":当前对象foo的x值=" + x);
}
}
}
楼主的问题我也挺好奇的,感觉是synchronized 没起作用似的,等高手回答
不知道这几位朋友在疑问什么?
当Thread-A到16行时,Thread-B同样可以执行到8行。x先被减30还先被打出没准,出现这个结果很正常。
+ ":当前对象foo的x值=" + x);这个比较耗时,当A执行完synchronized中的代码x=70,
开始要syso时,
B线程过来修改了x的值x=40
然后也开始syso,A syso出40,B也syso出40我想应该是这样- -