2011-12-02 33 views
-3

我使用我在網上找到的一些2DTransitions創建Java幻燈片。一切工作順利,但我遇到了一個問題,爲什麼試圖在幻燈片渲染後執行代碼。我認爲Java線程被用來隔離進程,例如我有一個類似的設置與無限的while循環,並且一個線程解決了這個問題。這裏它不工作,我不知道爲什麼。在下面的代碼中,我得到了第一個輸出,但它掛在thread.run上,並且從不打印最後一個輸出。Java Thread Hang

任何想法爲什麼?

下面是相關代碼:

System.out.println("Slideshow init"); 
     Thread thread = new Thread(new Runnable() { 
    //TODO SLIDESHOW PROBLEM RIGHT HERE 
      public void run(){ 
       int i=0; 
       while(keepgoing){ 
        if(i==images.size()-1){ 
         transit(images.get(images.size()-1),images.get(0)); 
         i=0; 
        } 
        else 
         transit(images.get(i),images.get(i+1)); 
        i++; 
       }  
      } 
     }); 
     System.out.println("Thread created"); 
     thread.run(); 
     System.out.println("Thread started");` 
+0

我正確地格式化了您的代碼。你錯過了「繼續前進」的聲明初始化,所以我不知道這個循環何時會結束。 –

+1

您解開了我的格式更改,出於某種原因,我無法回滾歷史記錄 –

回答

1

這不是異步的。您需要調用start()而不是run()運行將在當前線程中執行Runnable的run方法。開始將創建一個將調用run方法的新線程。

2

要啓動線程,請調用thread.start()。直接調用thread.run()不會生成新的線程。