chz*_*gla 2 java multithreading threadpool
我有一个Runnable实现类,它将从Executors.newFixedThreadPool
Inside 运行Runnable,我有一个无限循环运行,它在UDP端口上侦听传入数据.
我想优雅地结束Runnable以关闭所述UDP端口.
我怎样才能做到这一点?Thread直接扩展时,我可以访问interrupt()和isInterupted()等,我可以在其中建立无限循环.
Runnable然而,在实施课中,我想做类似的事情
@Override
public void run() {
while (active) {
}
}
Run Code Online (Sandbox Code Playgroud)
并有
private boolean active = true;
Run Code Online (Sandbox Code Playgroud)
ThreadPool终止后如何设置active = false?
您可以使用静态方法访问当前线程的中断标志 Thread.interrupted(),例如,而不是active使用您的标志:
public void run() {
try {
// open your ports
while (!Thread.interrupted()) {
// do stuff
}
} finally {
// close your ports in finally-block
// so they get closed even on exceptions
}
}
Run Code Online (Sandbox Code Playgroud)
当你想关闭你的时候ExecutorService,请打电话shutdownNow().这将是interrupt()任何正在运行的工作线程,并让你Runnable摆脱它的循环.