【问题标题】:Java Thread HangJava 线程挂起
【发布时间】:2011-12-02 19:31:18
【问题描述】:

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

【问题讨论】:

  • 我正确格式化了您的代码。你错过了“继续”的声明初始化,所以我不知道这个循环什么时候结束。
  • 您撤消了我的格式更改,由于某种原因我无法回滚历史记录

标签: java multithreading


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      • 2021-03-11
      • 2012-04-18
      • 2014-09-15
      • 1970-01-01
      相关资源
      最近更新 更多