【发布时间】:2012-05-12 06:49:43
【问题描述】:
鉴于此 Java 代码:
class Account {
private Integer number = 0;
public synchronized void setNumber(Integer number) {
this.number = number;
}
public synchronized Integer getNumber() {
return number;
}
}
class Client extends Thread {
Account account;
public Client(Account account) {
this.account = account;
}
public void run() {
for (int i = 1; i <= 1000; i++) {
account.setNumber(account.getNumber() + 1);
}
}
}
public class Run {
public static void main(String[] args) throws Exception {
Account account = new Account();
Client one = new Client(account);
Client two = new Client(account);
one.start();
two.start();
one.join();
two.join();
System.out.println("Exiting main");
System.out.println("account number value: " +account.getNumber());
}
}
main方法完成时number的值是多少?是2000还是2000以下?我得到的少于 2000。两个线程如何同时从 run() 调用 getNumer() 或 setNumber(),因为每个线程都是同步的?
【问题讨论】:
标签: java multithreading