public class Test { // 测试 public static void main(String[] args) throws Exception { Object obj = new Object(); // 启动两个线程 Thread1 t1 = new Thread1(obj); Thread2 t2 = new Thread2(obj); t1.start(); t2.start(); } } // 一个线程打印1-52 class Thread1 extends Thread { private Object obj; public Thread1(Object obj) { this.obj = obj; } public void run() { synchronized (obj) { // 打印1-52 for (int i = 1; i < 53; i++) { System.out.print(i + " "); if (i % 2 == 0) { // 不能忘了 唤醒其它线程 obj.notifyAll(); try { obj.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } } // 另一个线程打印字母A-Z class Thread2 extends Thread { private Object obj; public Thread2(Object obj) { this.obj = obj; } public void run() { synchronized (obj) { // 打印A-Z for (int i = 0; i < 26; i++) { System.out.print((char) ('A' + i) + " "); // 不能忘了 唤醒其它线程 obj.notifyAll(); try { // 最后一个就不要等了 if (i != 25) { obj.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } } } } }
时间: 2024-11-09 00:59:32