public class PrintNumber extends Thread{
private int mNumber ;
private volatile boolean switchThread = true;
private Object lock;
public PrintNumber(int number,Object lock){
mNumber = number;
this.lock = lock;
}
@Override
public void run() {
while (switchThread) {
synchronized (lock) {
System.out.print(mNumber);
try {
sleep(10);
lock.notify();
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public void stop2(){
switchThread = false;
}
public static void main(String[] args){
Object lock = new Object();
PrintNumber thread1 = new PrintNumber(1,lock);
PrintNumber thread2 = new PrintNumber(2,lock);
thread1.start();
thread2.start();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
thread1.stop2();
thread2.stop2();
synchronized (lock){
lock.notifyAll();
}
}
}
输出结果:
这个没有实在意义,就是看到一个面试题的一个练手,没想到中间还是出现了问题,不过很快就解决了,只是个记录。