Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:线程启动后如何继续执行?_Java_Multithreading_Asynchronous - Fatal编程技术网

Java:线程启动后如何继续执行?

Java:线程启动后如何继续执行?,java,multithreading,asynchronous,Java,Multithreading,Asynchronous,我正在启动一个线程,它无限期地循环,直到某个事件发生。问题是,我想启动这个线程,然后返回程序的正常执行。然而,在启动线程之后,代码似乎被卡住了 代码: 当我启动时,我会得到输出“Starting thread”,但直到run()中while循环的条件停止为true时,我才得到“returning” 你知道如何使它异步工作吗?使用start而不是run来启动线程。后者只是同步调用run方法 new Thread(thread).start(); 阅读:您可以在代码中尝试:- new Thread

我正在启动一个线程,它无限期地循环,直到某个事件发生。问题是,我想启动这个线程,然后返回程序的正常执行。然而,在启动线程之后,代码似乎被卡住了

代码:

当我启动时,我会得到输出“Starting thread”,但直到
run()
中while循环的条件停止为true时,我才得到“returning”


你知道如何使它异步工作吗?

使用
start
而不是
run
来启动
线程。后者只是同步调用
run
方法

new Thread(thread).start();

阅读:

您可以在代码中尝试:-

new Thread(thread).start();
比如:-

public void init()
{
   Runnable thread = new Runnable()
   {
     public void run()
     {
        while(something)
        {
           //do something
        }
     }        
   };
   System.out.println("Starting thread..");
   new Thread(thread).start();    //use start() instead of run()
   System.out.println("Returning");
   return;
}

您想调用
新线程(Thread).start()
而不是
run()

你确定你的方法吗?你说:

The thread should loop indefinitely until certain event occurs.

这是一个巨大的计算资源损失,程序主要注定会变得缓慢&失败。您可能希望将线程置于wait()模式,并捕获InterruptedException,以便在您感兴趣的事件发生时将其唤醒。如果对你正在努力完成的事情的初步理解是正确的,那么我强烈建议你修改你的方法。计算资源是昂贵的,不要把它浪费在无情的循环中。

这取决于他在循环中做什么。例如:
while(started){item=queue.take();doSomethingWith(item);}
,这将是完全正确的。@假设有合法的计算,它是完全正确的,但是作者特别指出“线程应该无限循环,直到特定事件发生”…换句话说,不调用
start()
你真的不是在分岔另一条线。通过调用
run()
The thread should loop indefinitely until certain event occurs.