线程池状态和关闭操作

线程池状态

  • RUNNING -1 :接收新任务并且执行队列中的任务
  • SHUTDOWN 0 :不再接收新任务,但是继续执行队列中的任务
  • STOP 1 :不再接收新任务,也不执行队列中的任务,并且中断执行中的任务
  • TIDYING 2 :所有任务已终止,workerCount为0,将要执行terminated()方法
  • TERMINATED 3 :terminated()方法执行完毕

状态转变路径

  1. RUNNING -> SHUTDOWN
    执行shutdown()方法
  2. (RUNNING or SHUTDOWN) -> STOP
    执行shutdownNow()方法
  3. SHUTDOWN -> TIDYING
    当队列和任务都为空
  4. STOP -> TIDYING
    当线程池为空
  5. TIDYING -> TERMINATED
    terminated()方法已经执行完毕

关闭方法

  1. shutdown()
    启动有序关闭,执行之前提交的任务,但不接受新任务。这个方法不会等到所有任务执行完才返回,使用awaitTermination()达到等待的目的。
  2. shutdownNow()
    尝试停止所有正在执行的任务,停止等待任务的处理,并返回等待执行的任务列表。从该方法返回后,这些任务将从任务队列中排出(删除)。这个方法不会等待任务终止才返回,使用awaitTermination()达到等待的目的。
posted @ 2025-11-11 11:36  Hekk丶  阅读(2)  评论(0)    收藏  举报