示例代码中的Shutdown()方法

时间:2015-03-05 13:21:14

标签: java

下面列出了我使用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);    
    }

}

1 个答案:

答案 0 :(得分:0)

为什么会这样: 提供一种方法来关闭ExecutorService以阻止它运行任务并释放它正在使用的线程。

如何调用它: 使用ExecutorService完成后需要调用它。在您提供的示例代码中,它不会在任何地方调用。

来自documentation

  

shutdown()方法将允许先前提交的任务执行   在终止之前,shutdownNow()方法阻止等待   从启动和尝试停止当前正在执行的任务的任务。