2011-12-02 61 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()不会生成新的线程。