package com.xielu.test; public class explicit { private static Lock lock = new ReentrantLock(); private static Condition odd = lock.newCondition(); private static COndition even = lock.newCondition(); private static int cnt = 1; private static final int MAX = 100; pulic static void main(String args[]){ Thread th1 = new Thread(){ @Override public void run(){ try{ lock.lock(); while(cnt <= MAX){ if(cnt%2 != 0){ System.out.println(cnt); cnt++; even.signalAll(); }else{ try{ odd.await(); }catch(Exception e){ e.printStackTrace(); } } } } finally { lock.unlock(); } } }; Thread th2 = new Thread(){ @Override public void run(){ try{ lock.lock(); while(cnt <= MAX){ if(cnt%2 == 0){ System.out.println(cnt); cnt++; odd.signalAll(); }else{ try{ even.await(); }catch(Exception e){ e.printStackTrace(); } } } } finally { lock.unlock(); } } }; th1.start(); th2.start(); } }