下面列出了我使用java.util.concurrent.ExecutorService找到的示例代码。主类包括一个shutdown()方法,该方法调用ExecutorService上的shutdown()方法。我不明白这个例子是什么时候调用这个方法。
感谢。
package multithreadingexample;
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class MultithreadingExample {
ExecutorService executor = Executors.newFixedThreadPool(3);
public void start() throws IOException {
int i=0;
while (!executor.isShutdown())
executor.submit(new MyThread(i++));
}
public void shutdown() throws InterruptedException {
executor.shutdown();
executor.awaitTermination(30, TimeUnit.SECONDS);
executor.shutdownNow();
}
public static void main(String argv[]) throws Exception {
new MultithreadingExample().start();
}
}
class MyThread implements Runnable {
private final int i;
MyThread(int i) {
this.i = i;
}
@Override
public void run() {
System.out.println("I am in thread:"+i);
}
}
答案 0 :(得分:0)
为什么会这样: 提供一种方法来关闭ExecutorService以阻止它运行任务并释放它正在使用的线程。
如何调用它: 使用ExecutorService完成后需要调用它。在您提供的示例代码中,它不会在任何地方调用。
shutdown()方法将允许先前提交的任务执行 在终止之前,shutdownNow()方法阻止等待 从启动和尝试停止当前正在执行的任务的任务。