use*_*260 6 java multithreading interrupt
我是Java新手并使用某人给出的代码.在代码的最后,如果线程尚未完成,它们会中断一个线程.我正在测量代码的时间.
问题是Java代码首先发出所有线程,然后最后中断.中断是否必要?我们不能等到所有线程真正完成吗?或者可能只是跳过中断(这些线程正在使用process exec命令运行进程,无论如何它们都将完成).这是相关的代码.首先是单个线程的代码:
String commandString = "./script.scr ";
process = Runtime.getRuntime().exec(commandString);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((lsString = bufferedReader.readLine()) != null)
{
System.out.println(lsString);
}
try
{
process.waitFor();
}
Run Code Online (Sandbox Code Playgroud)
现在调度这些线程的部分的代码:
public void stopWhenAllTaskFinished()
{
while(notFinished) {sleep(50);} //notFinished is class variable and somewhere else it will set to false.
//now finished.
//Interrupt all the threads
for (int i=0; i<nThreads; i++) {
threads[i].interrupt();
}
}
Run Code Online (Sandbox Code Playgroud)
从主类调用此函数,如:
obj.stopWhenAllTaskFinished()
Run Code Online (Sandbox Code Playgroud)
我非常感谢任何见解或回答.
目前尚不清楚您发布的代码是否需要中断。
如果notFinished
设置为false
所有线程完成时,则不需要中断。
如果notFinished
设置为false
当某些线程可能尚未完成时,则可能有必要。是否确实有必要取决于其他因素: