java多线程知识总结(二)

本文详细介绍了线程池的工作原理及其在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.某个线程到一个所后,还想拿第二个锁,造成锁的嵌套。

转载于:https://www.cnblogs.com/loveConan5----/p/9747645.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值