zoukankan      html  css  js  c++  java
  • 多线程下的任务取消

      记录如何取消一个放入到ExecutorService中的任务:采用FutureTask里面的Cancel;
      FuturTask.cancel函数将会自行将任务停掉,即占用的线程也将会释放;
      ExecutorService.shutdownNow()返回的List<Runnable>是“未执行任务列表”,不包括在执行的任务;我曾经误以为可以通过返回值进行手动设置当前运行的任务为cancel
    cancel的参数mayInterrupted含义是:true,则无条件关闭在运行的任务;false则代表等待在运行任务完成后在关闭;
      ExecutorService.awaitTerminated()函数还需要好好调查一下,我发现取消任务可能会导致调用此函数会一直阻塞,而且通过isTerminated()函数来看也是false,即使所有的任务都完成或者取消;可能是因为:ExecutorService.awaitTermianted()线程阻塞掉了,无法自己通知自己导致的。应该保证用户线程和ExecutorService工作线程是两个线程。
  • 相关阅读:
    fork()
    定时器
    epoll函数
    select函数
    高性能服务器程序框架
    socker地址API
    点击选中/取消选中flag
    html5的视频和音频
    html5
    JavaScript的string方法(demo)
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/6885786.html
Copyright © 2011-2022 走看看