java多线程知识总结(二)

使用线程池的好处:

1.重用存在的线程,减少对象创建、消亡的开销

2.有效控制最大并发数,提高系统资源使用率

3.定时执行、定期执行

线程池所在的包是java.util .concurrent

顶级接口是Executor,真正的线程池接口是ExecutorService

java.util.concurrent.Executors类提供创建线程池的方法

方法名                                                                                                       说明

newCachedThreadPool()                                                                     创建一个可缓存的线程池,有任务时才创建新任务

newSingleThreadExecutor()                                                                创建一个单线程池

newFixedThreadPool(int n Threads)                                                   创建一个固定长度的线程池,空闲线程会一直保留参数n Threads设定线程池中线程的数目

newScheduledThreadPool(int corePoolSize)                                      创建了一个固定长度的线程池而且以延迟或定时的方式来执行任务 

shutdown()                                                                                           关闭一个线程

ThreadPoolExecutor类构造器中各个参数的含义:

corePoolSize:核心池的大小

maximumPoolSize:线程池的最大线程数

keepAliveTime:表示线程没有任务执行时最多保持多久时间会终止

unit:参数keepAliveTime的时间单位

workQuene:一个阻塞队列,用来存储等待执行的任务

ThreadFactory:线程工厂,主要用来创建线程

handler:表示拒绝处理任务时的策略(报异常)

死锁:

即两个线程都在等待对方先完成,造成程序的停滞

死锁条件:

1.两个或两个以上的线程在活动

2.某个线程到一个所后,还想拿第二个锁,造成锁的嵌套。

posted @ 2018-10-06 16:26  诶呀呀~  阅读(79)  评论(0编辑  收藏  举报