在下面的代码中,在线程运行increment方法后,它将值2输出到控制台。不应该将值设为1,因为方法用1递增?为什么下面的代码增加2而不是1?(Java新手)
class TestSync implements Runnable {
private int balance;
public void run() {
for(int i = 0; i < 50; i++){
increment();
System.out.println(Thread.currentThread().getName() + " balance after increment is " +balance);
}
}
private synchronized void increment() {
int i = balance;
balance = i + 1;
// System.out.println(balance);
}
}
公共类TestSyncTest {
public static void main(String[] args) {
TestSync job = new TestSync();
Thread a = new Thread(job);
Thread b = new Thread(job);
a.setName("Thread A");
b.setName("Thread B");
a.start();
b.start();
}
}
如果两个线程递增值之前,任何人获得打印出的价值是什么? – tkausl
尝试评论现有的'System.out.println'并取消注释,现在你已经注释掉了。 –
你能检查我的答案吗? – KeLiuyue