码迷,mamicode.com
首页 > 编程语言 > 详细

多线程下的任务取消

时间:2017-05-21 20:41:50      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:ant   记录   executor   参数   ble   run   await   取消   nat   

  记录如何取消一个放入到ExecutorService中的任务:采用FutureTask里面的Cancel;
  FuturTask.cancel函数将会自行将任务停掉,即占用的线程也将会释放;
  ExecutorService.shutdownNow()返回的List<Runnable>是“未执行任务列表”,不包括在执行的任务;我曾经误以为可以通过返回值进行手动设置当前运行的任务为cancel
cancel的参数mayInterrupted含义是:true,则无条件关闭在运行的任务;false则代表等待在运行任务完成后在关闭;
  ExecutorService.awaitTerminated()函数还需要好好调查一下,我发现取消任务可能会导致调用此函数会一直阻塞,而且通过isTerminated()函数来看也是false,即使所有的任务都完成或者取消;可能是因为:ExecutorService.awaitTermianted()线程阻塞掉了,无法自己通知自己导致的。应该保证用户线程和ExecutorService工作线程是两个线程。

多线程下的任务取消

标签:ant   记录   executor   参数   ble   run   await   取消   nat   

原文地址:http://www.cnblogs.com/xiashiwendao/p/6885786.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!