public class TestSynchronous implements Runnable{
Timer timer = new Timer();
public static void main(String[] args){
TestSynchronous test = new TestSynchronous();
Thread t1 = new Thread(test);
Thread t2 = new Thread(test);
t1.setName("t1");
t2.setName("t2");
t1.start();
t2.start();
}
public void run(){
timer.add(Thread.currentThread().getName());
}
}
class Timer{
private static int num = 0;
public void add(String name){
num++;
try{
Thread.sleep(1);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println(name+": " +"是第"+num+"线程");
}
}
第一次在命令行编译执行时是这样:
随着执行次数的增加,有时候输出变成这样了:
下面这个图是总的执行次数,可以看出,有一个num输出为1: