//保证优先级 public volatile static boolean flag =true; public static void main(String[] args) { //控制的锁 final Object lock =new Object(); new Thread(new Runnable(){ @Override public void run() { synchronized(lock){ flag=false; for(int i=0;i<5;i++){ System.out.println("a"); try { lock.notify(); lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } lock.notify(); } }}).start(); new Thread(new Runnable(){ @Override public void run() { synchronized(lock){ //保证a先输出 if(flag){ try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } for(int i=0;i<5;i++){ System.out.println("b"); lock.notify(); try { //输出后让线程等待 lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } }}).start(); }
相比运用同步器cyclicbarrier来说,虽然功能实现了,但是代码比较繁琐