解决方案 »

  1.   

    仅供参考
    package test003;
    public class Dxc {
    public static void main(String[] args) {
    queuesum q=new queuesum();
    Sum ss=new Sum(q);
    dq dd=new dq(q);
    new Thread(ss).start();
    new Thread(dd).start();
    }
    }class Sum implements Runnable{
    queuesum q;
    public Sum(queuesum q){
    this.q=q;
    }
        public void run(){
         while(true){
         q.calsum();
         }
        }
    }
    class dq implements Runnable{
    queuesum q;
    public dq(queuesum q){
    this.q=q;
    }
         
        public void run(){
         while(true){
         q.getsum();
         }
        }
    }class queuesum{
    int sum;
    boolean flag=false;
    public synchronized void calsum(){
    if(!flag){
    sum=0;
    for(int i=1;i<=20;i++){
                sum+=i*(i+1);
                try {
    Thread.sleep(100);
    } catch (Exception ee) {
    ee.printStackTrace();
    }
            }
    System.out.println("calsum OK!");
    flag=true;
    notify();
    }
    try
    {
    wait();

    }
    catch(Exception ee){
    ee.printStackTrace();

    }
    }

    public synchronized void getsum(){
    if(!flag){
    try
    {
    wait();

    }
    catch(Exception ee){
    ee.printStackTrace();

    }
    }
    flag=false;
    notify();
    System.out.println("sum="+sum);
    }
    }
      

  2.   


    我已经解决了 还是谢谢你。。 不用那么麻烦加入wait()的