<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

        明月松間照 清泉石上流


                                            ——— 兵臨城下   貓科動物
    posts - 70, comments - 137, trackbacks - 0, articles - 23
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
    看一下下面這段程序
    package com.xcblcx.test;

    import java.util.ArrayList;

    public class ThreadNotifyTest {
        
    private ArrayList list = new ArrayList();

        
    /**
         * 
    @param args
         
    */

        
    public static void main(String[] args) {
            ThreadNotifyTest test 
    = new ThreadNotifyTest();
            Queue queue 
    = test.new Queue();
            
    try{
                Thread.sleep(
    1000);
                
    for(int i=0;i<5;i++{
                    queue.addStr(
    new Integer(i).toString());
                    Thread.sleep(
    1000);
                }

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

        }

        
        
    class ThreadTest extends Thread {
            Queue queue 
    = new Queue();
            
            
    public ThreadTest() {
                
    //this.queue = queue;
            }

            
    public void run() {
                
    while(true{
                    
    try{
                        System.out.println(
    "Thread start .");
                        String testStr 
    = this.queue.getNext();
                        System.out.println(testStr);
                    }
    catch(Exception e ){
                        e.printStackTrace();
                    }

                }

            }

        }

        
        
    class Queue {
            
    private ThreadTest threadTest = null;
            
            
    public Queue(){
                
    //this.threadTest = new ThreadTest(this);
                this.threadTest = new ThreadTest();
                
    this.threadTest.start();
            }

            
            
    public void addStr(String str) {
                
    synchronized(list) {
                    list.add(str);
                    list.notify();
                }

            }

            
            
    public String getNext() throws InterruptedException {
                
    synchronized(list) {
                    
    while(list.size() <= 0{
                        System.out.println(
    "wait start");
                        list.wait();
                        System.out.println(
    "wait end");
                    }

                    
                    
    return (String)list.remove(0);
                }

            }

        }


    }



    運行結果為:
    java.lang.StackOverflowError
    Exception in thread "main"
    請問為什么?

    評論

    # re: 五一前最后一貼!發現一個問題,搞不明白,上來求助!  回復  更多評論   

    2008-05-01 10:28 by 隔葉黃鶯
    產生互相循環調用,看

    new Queue() 時 new 了 ThreadTest(),而 new ThreadTest() 時又 new 了 Queue() ,繼而再 new ThreadTest(),循環不已,無窮盡也

    你需要在 new Queue() 時傳遞一個已創建好的 ThreadTest 實例,如這樣的構造

    public Queue(ThreadTest threadTest){
    this.threadTest = threadTest;
    }

    在 ThreadTest 構造方法中就不用處理 Queue 的創建了,或者他們的職責換一下也行。

    # re: 五一前最后一貼!發現一個問題,搞不明白,上來求助!  回復  更多評論   

    2008-05-02 15:33 by 兵臨城下
    明白了,謝了!
    主站蜘蛛池模板: 亚洲av日韩av天堂影片精品| 99视频在线精品免费| 亚洲av午夜精品无码专区| 亚洲一区二区精品视频| 青青青青青青久久久免费观看| 曰批全过程免费视频网址| 手机看片国产免费永久| 免费视频成人国产精品网站| 亚洲a视频在线观看| 久久精品国产亚洲AV无码娇色| 亚洲综合在线另类色区奇米| 国产免费AV片无码永久免费| 女性自慰aⅴ片高清免费| 国产a视频精品免费观看| 日韩电影免费观看| 99精品视频在线观看免费| 一级做a爰片久久毛片免费看| 亚洲国产一区二区三区在线观看 | 色窝窝亚洲AV网在线观看| 亚洲ts人妖网站| 国产精品亚洲片夜色在线| 亚洲成在人线电影天堂色| 亚洲一区二区电影| 国产AV无码专区亚洲AV男同| 中文字幕在亚洲第一在线| 亚洲日韩涩涩成人午夜私人影院| 免费看国产精品麻豆| 国产一级高清免费观看| 日韩一级视频免费观看| 国产精品国产自线拍免费软件| 成人人观看的免费毛片| 免费看美女让人桶尿口| 日本高清免费网站| 日本免费福利视频| 日产国产精品亚洲系列| 亚洲成A人片在线观看中文| 国产精品V亚洲精品V日韩精品| 亚洲最大激情中文字幕| 亚洲午夜久久久精品影院| 亚洲综合图片小说区热久久| 亚洲人成高清在线播放|