有关线程池知识
一、线程池用了哪些设计模式工厂模式Java中Executors类提供的newFixedThreadPool、newCachedThreadPool等静态方法本质上是工厂方法它们封装了TreabPoolExecutor复杂的参数配置根据不同场景返回预配置的线程池实例简化了用户创建线程池的操作。享元模式线程池通过复用已创建的线程来执行多个任务避免了频繁创建和销毁线程带来的资源消耗。线程作为“共享资源”在完成一个任务后不会被销毁而是回到线程池等待新的任务这对线程资源的共享复用正是享元模式的典型应用有效提高了系统的资源利用率。生产者--消费者模式用户通过execute或submit方法提交任务任务被放入阻塞队列中。线程池中的工作线程不断从队列中取出任务并执行。模板方法模式ThreadPoolExecutor的execute方法定义了任务执行的整体流程框架先尝试添加任务到核心线程失败则加入队列再失败则创建非核心线程最后执行拒绝策略。二、线程池中shutdown(),shutdownNow()这两个方法有什么作用shutdown调用后状态置为SHUTDOWN已提交但未开始执行的队列任务仍会按顺序继续执行直到全部完成只对处于空闲等待状态的worker线程调用interrupt()shutdownNow为STOP并试图停止使用正在执行的线程不再处理还在池队中等待的任务当然它会返回那些执行的任务。三、提交给线程池中的任务可以被撤回吗可以撤回当向线程池提交任务时会得到一个Future对象。这个Future对象提供了几种方法来管理任务的执行包括取消任务。