拒绝策略的实现根据前面提到的各种策略的具体实现方式,具体的代码实现如下所示:
private void reject(Runnable runnable) throws InterruptedException { switch (policy) { case ABORT: throw new RuntimeException("task queue is full"); case CALLER_RUN: runnable.run(); case DISCARD: // 直接放弃这个任务 return; case DISCARD_OLDEST: // 放弃等待时间最长的任务 也就是队列当中的第一个任务 taskQueue.poll(); execute(runnable); // 重新执行这个任务 } }线程池关闭实现一共两种方式实现线程池关闭:
- 直接关闭线程池,不管任务队列当中的任务是否被全部执行完成 。
- 安全关闭线程池 , 先等待任务队列当中所有的任务被执行完成,再关闭线程池,但是在这个过程当中不允许继续提交任务了,这一点已经在函数 checkPoolState 当中实现了 。
推荐阅读
- 驱动开发:内核枚举进程与线程ObCall回调
- [WPF] 抄抄超强的苹果官网滚动文字特效实现
- 河南移动卡套餐 移动卡套餐一览表
- reportportal 集成 robotframework 自动化执行及结果可视化
- 驱动开发:内核枚举Registry注册表回调
- 魔镜物语喜羊羊联动角色技能属性是什么样的
- 微信怎么把一条消息或链接转发给自己(微信消息怎么全部转发)
- 手机怎么自动截屏(如何停止手机自动截屏)
- 烟雨江湖蓝鲸屿活动玩法思路是什么
- 如何撤掉自己建的群 微信如何建立自己的微信群建群后如何撤销呢
