题目
交替打印奇偶数
资源实体
public class Num {
    int i = 1;
    // true: 打印奇数   false: 打印偶数
    boolean flag = true;
}
打印奇数线程
public class PrintOddThread implements Runnable {
    private final Num num;
    public PrintOddThread(Num num) {
        this.num = num;
    }
    @Override
    public void run() {
        while (num.i < 10000) {
            synchronized (num) {
                if (num.flag) {
                    System.out.println("奇数\t" + num.i);
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    num.i++;
                    num.flag = false;
                } else {
                    try {
                        num.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}
打印偶数线程
public class PrintEvenThread implements Runnable {
    private final Num num;
    public PrintEvenThread(Num num) {
        this.num = num;
    }
    @Override
    public void run() {
        while (num.i < 10000) {
            synchronized (num) {
                if (!num.flag) {
                    System.out.println("偶数\t" + num.i);
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    num.i++;
                    num.flag = true;
                } else {
                    num.notify();
                }
            }
        }
    }
}
主函数
public class App {
    public static void main(String[] args) throws IOException {
        ExecutorService executor = Executors.newFixedThreadPool(2);
        Num num = new Num();
        executor.execute(new PrintOddThread(num));
        executor.execute(new PrintEvenThread(num));
        
        executor.shutdown();
    }
}
运行结果
奇数 1
偶数 2
奇数 3
偶数 4
奇数 5
偶数 6
奇数 7
偶数 8
奇数 9
偶数 10
奇数 11
偶数 12
奇数 13
偶数 14
奇数 15
偶数 16
奇数 17
偶数 18
奇数 19
偶数 20
......
                










