《Java---多线程交替打印1,2》

1.这种方法可以再添加多个线程,定义好执行的顺序就可以了。唤醒的时候全部唤醒。不是当前线程执行时还说会休眠。

public class Main {private static boolean isFirst = true; static class First implements Runnable { private Object lock; public First(Object lock) { this.lock = lock; } @Override public void run() { while (true) { synchronized (lock) { if (isFirst) { System.out.println("1"); isFirst = false; lock.notify(); } else { try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } }static class Second implements Runnable { Object lock; public Second(Object lock) { this.lock = lock; }@Override public void run() { while (true) { synchronized (lock) {if (!isFirst) { System.out.println("2"); isFirst = true; lock.notify(); } else { try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } }public static void main(String[] args) { Object lock = new Object(); new Thread(new First(lock)).start(); new Thread(new Second(lock)).start(); } }

【《Java---多线程交替打印1,2》】2.这种方式只是此问题的另一只解法而已。
public class Main {public synchronized void print(String str) { notify(); System.out.println(str); try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } }class A implements Runnable {@Override public void run() { while (true) { print("A" + 1); } } }class B implements Runnable {@Override public void run() { while (true) { print("B" + 2); }} }public static void main(String[] args) { Main p = new Main(); A a = p.new A(); B b = p.new B(); new Thread(a).start(); new Thread(b).start(); }}

    推荐阅读