executor 和task 优先于线程(68)

java.util.concurrent 包里有一个Executor 框架

  • 基于接口的任务执行工具
  • 只需要一行代码
  • 提交一个runnable 方法
  • 优雅的终止(必须做到,不然虚拟机可能不会退出)

对于负载不重的服务

  • Executors.newCachedThreadPool 就能满足
    • 不太适合大负载
    • 因为被提交的任务没有排队,而是直接交给线程执行,没有空闲就会new 新的线程

大负载服务器

  • Executors.newFixedThreadPool
    • 包含固定数量线程
    • 最大限度的控制,直接使用ThreadPoolExecutor

请尽量不要使用自己的工作队列、也尽量不要直接使用线程

  • Thread 是执行机制、又是工作单元(任务:task)
  • 现在二者分开,task由Runnable、Callable来充当
    • 执行机制executor service

本质上讲,executor 框架所做的工作是执行,就像Collection 框架做的是 聚集

猜你喜欢

转载自my.oschina.net/u/3847203/blog/2987610