wait()和notify() public class Synchronize { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Q q=new Q(); new Thread(new Producer(q)).start(); new Thread(new Consumer(q)).start(); } } class Producer implements Runnable { Q q; public Producer(Q q) { this.q=q; } public void run() { int i=0; while(true) { synchronized (q) { if(q.bFull) try { q.wait(); } catch (Exception e) { } if(i==0) { q.name="zhangsan"; try { Thread.sleep(1); } catch (Exception e) { e.printStackTrace(); } q.sex="male"; } else { q.name="lishi"; q.sex="female"; } q.bFull=true; q.notify(); } i=(i+1)%2; } } } class Consumer implements Runnable { Q q; public Consumer(Q q) { this.q=q; } public void run() { while(true) { synchronized (q) { if(!q.bFull) try { q.wait(); } catch (Exception e) { } System.out.print(q.name); System.out.println(" "+q.sex); q.bFull=false; q.notify(); } } } } class Q { String name=""; String sex=""; boolean bFull=false; }