我正在使用我在网上找到的一些2DTransitions创建Java幻灯片。一切顺利,但我遇到了一个问题,为什么在幻灯片渲染后尝试执行代码。我认为Java线程用于隔离进程,例如我有一个带有无限while循环的类似设置,并且一个线程解决了这个问题。这里没有工作,我无法弄清楚原因。在下面的代码中,我得到了第一个输出,但它挂在thread.run上,从不打印最后一个输出。
任何想法为什么?
以下是相关代码:
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 :(得分:2)
要启动一个线程,请调用thread.start()。直接调用thread.run()不会产生新线程。
答案 1 :(得分:1)
这不是异步的。您需要调用start()
而不是run()
Run将在当前线程中执行Runnable的run方法。 start将创建一个新线程,它将调用run方法。