本帖最后由 yaojianquansb 于 2010-07-29 00:15:03 编辑

解决方案 »

  1.   


    import java.util.LinkedList;
    public class Test  extends Thread{
            static LinkedList<String> myList = new LinkedList<String>();
            static  boolean flag=true;
            public Test(){}
            public Test(String threadName){
                    super(threadName);
            }
            public static void add(){
                  myList.add("apple1");
                  myList.add("apple2");                  
                  flag=false;
            }
            public void run(){                
                    synchronized(myList){
                            try{
                            while(myList.size()==0){
                            if(flag)
                                  {System.out.println("Warnning:"+getName()+" It's empty!");
                                    myList.wait();}
                             else 
                                 break;
                             
                              }
                             if(myList.size()>0) 
                            {String s = myList.removeLast();
                           System.out.println(getName()+":"+s);}
                          else
                             System.out.println("INFO:"+getName()+" quit.");
                        }catch(Exception e){
                            e.printStackTrace();
                        }
                    }
            }
            public static void main(String args[]){        
                  Test t1 = new Test("t1");
                  Test t2 = new Test46("t2");
                          Test46 t3 = new Test("t3");
                    t1.start();
                    t2.start();
                    t3.start();
                    try{
                        Thread.sleep(3000);
                    }catch(Exception e){
                          e.getMessage();
                    }
                    synchronized(myList){                
                            add();
                            myList.notifyAll();
                    }
            }
    }
      

  2.   

    这是简单的生产者与消费者问题, 只不过没有生产者,
    是不是可以当myList.size()==0时就退出,因为此时没有生产者,那么对于消费者来说wait()就没什么意义,
    LZ看下是不是可以这样:
    while(myList.size()==0){
                                  System.out.println("Warnning:"+getName()+" It's empty!");
                                   // myList.wait();
    break;
                            }
      

  3.   

    士兵突击  麻烦看一下这个,http://topic.csdn.net/u/20100729/15/232335a5-4632-4501-b899-a249750dd22f.html?10290,我昨天想问这个的,后来自己写了个简单点的,悟性太低,这个明白了,那个还是不会。