public static void main(String[] args) {
Calculator calculator = new Calculator();
//启动三个线程,分别获取计算结果
new ReaderResult(calculator).start();
new ReaderResult(calculator).start();
new ReaderResult(calculator).start();
//启动计算线程
calculator.start();
}
}
public class Calculator extends Thread {
int total;
public void run() {
synchronized (this) {
System.out.println(total);
for (int i = 0; i < 101; i++) {
total += i;
}
System.out.println(total);
}
}
}
new ReaderResult(calculator).start();
new ReaderResult(calculator).start();
new ReaderResult(calculator).start();
//前三个线程启动,但是上了锁,只有一个可以到达wait,cpu有一定概率先执行到wait语句
calculator.start();
//最后一个线程启动,cpu也有一定概率执行输出语句在wait方法调用之前