package javaapplication8;public class Main { public static void main(String args[]){ H h=new H(); P p=new P(h); C c=new C(h); p.start(); c.start(); } } class H{ private int s; public synchronizedvoid set(int v){ s=v;try{wait();} catch(InterruptedException e){} }public synchronized int get(){ notify();return s;}}class P extends Thread{ private H h; public P(H h){ this.h=h; } public synchronized void run(){ for(int i=1;i<=4;i++){
h.set(i);System.out.println("产生的新数据是"+i);} } } class C extends Thread{ private H h; public C(H h){ this.h=h; } public synchronized void run(){ for(int i=1;i<=4;i++){ int v=h.get(); System.out.println("读到的数据是:"+v); } } } 这是我修改后的程序,我在Thread里面加了同步,同时去掉了当按钮的BOOLEAN类型变量WE.避免了2个线程在PRINT语句时出现调换情况!至于细节方面的原因还是等高手来解决吧: )PS:我的多线程只学了大概!细节方面知道的不多.