Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.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-ExecutorService:如何重新运行;“等待状态”;线_Java_Multithreading_Runnable_Executorservice_Executor - Fatal编程技术网

Java-ExecutorService:如何重新运行;“等待状态”;线

Java-ExecutorService:如何重新运行;“等待状态”;线,java,multithreading,runnable,executorservice,executor,Java,Multithreading,Runnable,Executorservice,Executor,我使用的服务是 ExecutorService executorService = Executors.newFixedThreadPool(5); for(int i = 0 ; i < 5 ; i ++){ executorService.submit(new MyRunnable()); } 当我从Runnable的while循环中断时,线程的状态变为“wait” 问题1。我的“while(true)loop”会死吗 问题2。如果它能够死亡,如何重新运行 谢谢。如果中断w

我使用的服务是

ExecutorService executorService = Executors.newFixedThreadPool(5);

for(int i = 0 ; i < 5 ; i ++){
    executorService.submit(new MyRunnable());
}
当我从Runnable的while循环中断时,线程的状态变为“wait”

问题1。我的“while(true)loop”会死吗

问题2。如果它能够死亡,如何重新运行


谢谢。

如果中断while循环,线程将进入终止状态,因为它将到达函数的末尾

A1。你的while循环会死


A2。你不能。您应该再次将您的runnable提交给executorService。

是否等于等待并终止?等待意味着:无限期等待另一个线程执行特定操作的线程处于此状态。我猜您的runnable将在“SynchronizedQueue.getData()”处变为等待状态此调用否。。。我在while循环中添加了“break”;若你们不打破这个循环,它就变成了“WAIT”,而这个循环永远不会死
@Override
public void run(){
    while(true){
        try{
            Data data = SynchronizedQueue.getData(); // Class Name is Sample...
            if( data != null ){
                //process with data
            }else{
                Thread.sleep(1);
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}