不同步的情况 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) { 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"; } i=(i+1)%2; } } } class Consumer implements Runnable { Q q; public Consumer(Q q) { this.q=q; } public void run() { while(true) { System.out.print(q.name); System.out.println(" "+q.sex); } } } class Q { String name=""; String sex=""; } 修改后同步的情况 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(i==0) { q.name="zhangsan"; try { Thread.sleep(1); } catch (Exception e) { e.printStackTrace(); } q.sex="male"; } else { q.name="lishi"; q.sex="female"; } i=(i+1)%2; } } } } class Consumer implements Runnable { Q q; public Consumer(Q q) { this.q=q; } public void run() { while(true) { synchronized (q) { System.out.print(q.name); System.out.println(" "+q.sex); } } } } class Q { String name=""; String sex=""; }