public class Thtest { private static final Object obj = new Object(); public static void main(String[] args) { new Thread(new Runnable(){ @Override public void run() { for(int i = 0;i<100;i++){ synchronized (obj){ if ((i & 1) == 1){ System.out.println(Thread.currentThread().getName()+":"+i); } obj.notify(); try { obj.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } },"奇数线程").start(); new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 100; i++){ synchronized (obj){ if ((i&1)==0){ System.out.println(Thread.currentThread().getName()+":"+i); } obj.notify(); try { obj.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } },"偶数线程").start(); } }