永发信息网

Java里ExecutorService里shutdown()是什么意思

答案:2  悬赏:0  手机版
解决时间 2021-03-21 19:38
Java里ExecutorService里shutdown()是什么意思
最佳答案
当线程池调用该方法时,线程池的状态则立刻变成SHUTDOWN状态,以后不能再往线程池中添加任何任务,否则将会抛出RejectedExecutionException异常。但是,此时线程池不会立刻退出,直到添加到线程池中的任务都已经处理完成,才会退出。 与它相似的还有一个shutdownNow(),它通过调用Thread.interrupt来实现线程的立即退出。
全部回答
shutdown,执行后不再接收新任务,如果里面有任务,就执行完
shutdownNow,执行后不再接受新任务,如果有等待任务,移出队列;有正在执行的,尝试停止之
==========================
通常shutdown之后调用awaitTermination,作用是:后者会阻塞当前线程,等待剩余任务执行完,然后继续往下执行。如果不适用await,那么shutdown之后,很可能导致剩余任务得不到执行(整个程序退出),或是执行出现异常(某些资源被释放之类)。
==========================
例子,网上来的,懒得动手写:
================
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;


public class CallableAndFuture {


public static class MyCallableClass implements Callable{
// 标志位
private int flag = 0;
public MyCallableClass(int flag){
this.flag = flag;
}
public String call() throws Exception{
if (this.flag == 0){
// 如果flag的值为0,则立即返回
return "flag = 0";
}
if (this.flag == 1){
// 如果flag的值为1,做一个无限循环
try {
while (true) {
System.out.println("looping.");
Thread.sleep(2000);
}
} catch (InterruptedException e) {
System.out.println("Interrupted");
}
return "false";
} else {
// falg不为0或者1,则抛出异常
throw new Exception("Bad flag value!");
}
}
}

public static void main(String[] args) {
// 定义3个Callable类型的任务
MyCallableClass task1 = new MyCallableClass(0);
MyCallableClass task2 = new MyCallableClass(1);
MyCallableClass task3 = new MyCallableClass(2);

// 创建一个执行任务的服务
ExecutorService es = Executors.newFixedThreadPool(3);
try {
// 提交并执行任务,任务启动时返回了一个 Future对象,
// 如果想得到任务执行的结果或者是异常可对这个Future对象进行操作
Future future1 = es.submit(task1);
// 获得第一个任务的结果,如果调用get方法,当前线程会等待任务执行完毕后才往下执行
System.out.println("task1: " + future1.get());

Future future2 = es.submit(task2);
// 等待5秒后,再停止第二个任务。因为第二个任务进行的是无限循环
Thread.sleep(5000);
System.out.println("task2 cancel: " + future2.cancel(true));

// 获取第三个任务的输出,因为执行第三个任务会引起异常
// 所以下面的语句将引起异常的抛出
Future future3 = es.submit(task3);
System.out.println("task3: " + future3.get());
} catch (Exception e){
System.out.println(e.toString());
}
// 停止任务执行服务
es.shutdownNow();
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
抛物线y=3(x-2)2-3的顶点坐标为________,
木兰顶地址在哪,我要去那里办事
58同城我急需出售古钱币找什么网
卡通农场怎么注销gamecenter
《周庄水韵》阅读答案
大学学生会有哪些培训,大学参加学生会有什么
女婿在老丈人家
如果有一个女孩追了你四年,但是你从最初到现
赛宝洲地址有知道的么?有点事想过去
明明已和那人解决了工地上的事情了 而且那人
八班的班级口号,班级挑战口号大全七二班十六
野生的獐子牙能辟邪吗
求教关于FATE的问题
DNF的冒险者归来怎么搞的啊
梆子是什么乐器,请问高音板胡弦和中音板胡弦
推荐资讯
办兴业银行卡要手续费吗
哪里能下载免费的现代京剧《智取威虎山》《红
班主任元旦寄语,下午公司要录新年视频。每个
贴钻十字绣裱框会掉钻吗久了会掉钻吗
家长毕业寄语幼儿园,幼儿园毕业纪念家长对宝
出国签证一个月了还在审核中9月1号保险生效了
我XX他个圈圈!为什么你们回答可以用一两个字
松鼠吃什么水果
GUCCI古驰的上面标有lait pour le corps body
体态安康是什么意思
单选题做“绿叶在光下制作淀粉”实验,要先将
大关县公安局交警大队二中队执勤点在哪里啊,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?