JDK1.5多线程提高

1.名词:

  1.任务的执行与任务的提交解耦

  2.任务的执行策略-可中断,取消

2.线程封闭机制:

  针对单线程池而言,提高任务执行的速度,但是无需锁定

3.饥饿死锁:

  任务长期得不到执行,其实就是形成闭合的环路导致,共享资源互相锁定导致

4.超时机制:

  指定时间任务完不成,则重新加入的线程的执行队列中等待重新执行(超时就是重试机制)

5.线程池的大小:

  做好做成动态的,看CPU的线程数:Runntime.avalibleProcessors()

6.ExecutorService:

  线程管理器其实就是一个ThreadPools,里面有线程,任务队列所以我们可以定制ThreadPoolsExecutor(个数,最大个数,空闲时间,任务队列,线程工厂,拒绝处理器

  空闲时间:线程没有被执行的时间间隔,如果一直未被使用,则进行回收

  任务队列:用户提交的任务列表,其实就是缓存,等待线程执行---扩展点

  线程工厂:  线程池随着需求进行动态创建线程的过程中所使用的线程工厂  ----扩展点

  拒绝策略:针对用户提交任务的限制,因为队列是优先的---扩展点

  线程工厂:定制特殊的线程

  线程池:任务执行前后进行监控 beforeExecute  afterExecute

7.队列:

  有届队列:大小有限制,超过容量之后将会执行拒绝的执行器

  无界队列:

  同步移交:针对大队列,直接提交给执行线程

8.Caller-Run:一种饱和机制,任务执行在与Executor的所在线程,应用层进行排队执

9.控制线程池的任务提交的速率就是通过信号量机制进行限制

10.守护线程与非守护线程:(一些业务可以标识为守护线程,自动销毁)

11.

===========================================================

开发中的问题:

1.线程池大小动态设置

2.饱和策略

3.任务执行失败,重试策略

4.

原文地址:https://www.cnblogs.com/gstsyyb/p/3850061.html