Java线程挂起

时间:2011-12-02 19:31:19

标签: java multithreading

我正在使用我在网上找到的一些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");`

2 个答案:

答案 0 :(得分:2)

要启动一个线程,请调用thread.start()。直接调用thread.run()不会产生新线程。

答案 1 :(得分:1)

这不是异步的。您需要调用start()而不是run() Run将在当前线程中执行Runnable的run方法。 start将创建一个新线程,它将调用run方法。