错误示范:
package 多线程;
/**
* 奇偶线程交替打印1-100的奇偶数
* */
public class PrintOddAndEven implements Runnable {
private String name;
private Object lock;//信号量实现同步
private static volatile int counts = 1;
public PrintOddAndEven(String name,Object lock){
this.name = name;
this.lock = lock;
}
@Override
public void run() {
while(counts<=100){//没打印完的话,获取lock进行打印
synchronized (lock){
System.out.println(name+":"+(counts++));
lock.notify();
try {
lock.wait();//不能仅这样写,这样写会导致由于最后一个线程被阻塞没法再被唤醒了从而令程序结束不了
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws InterruptedException {
Object lock = new Object();
PrintOddAndEven odd