当前位置: 首页 > news >正文

锁定网站导航栏怎么去优化关键词

锁定网站导航栏,怎么去优化关键词,ui设计自学教程500集,邹城做网站Java 线程池中 shutdown 与 shutdownNow 的区别 核心行为差异 | 方法 | 行为描述 | |----------------|----------------------------------------------------------------------------| | shutdown | 平缓关闭线程池:1. 停止接受新任务。2. 已提交的任务&#xff…

Java 线程池中 shutdownshutdownNow 的区别


  1. 核心行为差异
    | 方法 | 行为描述 |
    |----------------|----------------------------------------------------------------------------|
    | shutdown | 平缓关闭线程池:
    1. 停止接受新任务。
    2. 已提交的任务(包括队列中的任务)会继续执行完成。 |
    | shutdownNow | 强制关闭线程池:
    1. 停止接受新任务。
    2. 尝试中断正在执行的任务。
    3. 清空任务队列,并返回未执行的任务列表。 |

  1. 线程中断机制
  • shutdown

    • 不中断任何线程,正在执行的任务会继续运行直到完成。
    • 适用于需要确保所有已提交任务完整执行的场景(如数据持久化)。
  • shutdownNow

    • 向所有工作线程发送中断信号(调用 Thread.interrupt())。
    • 任务是否终止取决于代码逻辑:
      • 若任务未检查中断状态(如未捕获 InterruptedException),可能无法终止。
      • 示例:一个循环任务中未调用 Thread.currentThread().isInterrupted(),即使调用 shutdownNow,任务仍会继续运行。

  1. 任务队列处理
    | 方法 | 队列处理 | 返回值 |
    |----------------|----------------------------------------------------------------------------|------------------------------|
    | shutdown | 继续执行队列中所有任务。 | 无返回值。 |
    | shutdownNow | 移除并丢弃队列中所有未执行的任务,返回这些任务的列表(List<Runnable>)。 | 返回未执行任务的列表。 |

  1. 线程池状态变化
  • shutdown

    • 将线程池状态从 RUNNING 改为 SHUTDOWN
    • 最终状态会过渡到 TERMINATED(需所有任务执行完毕)。
  • shutdownNow

    • 将线程池状态从 RUNNING 改为 STOP
    • 最终状态过渡到 TERMINATED(无论任务是否全部完成)。

  1. 适用场景
    | 方法 | 典型场景 |
    |----------------|----------------------------------------------------------------------------|
    | shutdown | 需要确保所有任务完整执行(如数据库批量写入、日志归档)。 |
    | shutdownNow | 紧急终止线程池(如服务宕机前快速释放资源,或处理死锁任务)。 |

实战建议

  1. 优雅关闭的最佳实践:

    • 先调用 shutdown,再通过 awaitTermination 等待任务完成。
    • 若超时未完成,再调用 shutdownNow 强制终止。
    executor.shutdown();
    try {if (!executor.awaitTermination(60, TimeUnit.SECONDS)) {executor.shutdownNow(); // 超时后强制终止 }
    } catch (InterruptedException e) {executor.shutdownNow();
    }
    
  2. 任务代码的容错设计:

    • 在任务中定期检查中断状态,确保能响应 shutdownNow
    public void run() {while (!Thread.currentThread().isInterrupted()) {// 执行任务逻辑 }
    }
    
  3. 监控与日志:

    • 记录 shutdownNow 返回的未执行任务列表,用于故障恢复或重试。

扩展:源码级逻辑

  • shutdown
    • 仅修改线程池状态为 SHUTDOWN,后续执行完队列任务后触发 terminate()
  • shutdownNow
    • 修改状态为 STOP,中断所有工作线程,并清空队列。
    • 源码片段:
      public List<Runnable> shutdownNow() {List<Runnable> tasks;final ReentrantLock mainLock = this.mainLock;mainLock.lock();try {checkShutdownAccess();advanceRunState(STOP);  // 状态改为STOP interruptWorkers();     // 中断所有线程 tasks = drainQueue();   // 清空队列并返回未执行任务 } finally {mainLock.unlock();}tryTerminate();return tasks;
      }
      

总结

  • shutdown 是“礼貌告别”,确保任务善后。
  • shutdownNow 是“强制清场”,适合紧急场景,但依赖任务代码的健壮性。
  • 关键选择点:是否需要保留未执行任务?能否容忍任务中途终止?
http://www.tj-hxxt.cn/news/68355.html

相关文章:

  • 网站开发技术路线怎么在百度做免费推广
  • 公司要招个做网站的人西安seo计费管理
  • 花生壳 建设网站网站seo技术能不能赚钱
  • 陕西网站建设公司山东关键词快速排名
  • 博客网站源码百度新闻app
  • 廉江人做寄生虫网站成都网络营销品牌代理机构
  • 两学一做 网站源码seo知识培训
  • 做网站基本教程淘宝网店代运营正规公司
  • 手机版网站有必要吗淄博信息港聊天室网址
  • php做的网站如何运行优化工作流程
  • 做购物车网站多少钱网站建设制作教程
  • wap网站制作怎么做免费搜索引擎推广方法有哪些
  • 怎么删除网站的死链网络广告的特点
  • 瀑布流网站有哪些自媒体营销代理
  • 和外国人做古玩生意的网站百度竞价价格
  • 欣赏别人做的网站十大网络推广公司排名
  • 禅城网站建设多少钱地推公司
  • 武汉搭建网站网站快速排名优化
  • 青岛网站建设青岛新思维个人网页制作教程
  • 网站创建过程品牌营销与推广
  • 在银行网站如何做理财风险评测公司员工培训内容有哪些
  • 广州做网站多少钱免费推广的网站平台
  • 建立网站的公司杭州网站推广怎么做才有效果
  • 顺德大良网站建设开发代发百度关键词排名
  • 好买卖做网站电话百度
  • 日本男女直接做的视频网站网站优化推广外包
  • 网站页面设计与制作实践trinseo公司
  • 用jsp做的简单网站代码南宁seo排名优化
  • 成都网站建设行业分析百度推广要自己建站吗
  • 用阿里云服务器做刷单网站友情链接百科