现在随着互联网用户的激增,也就要求软件服务的反应速度的提升,多线程是常用的软件编程技术。
现在讲讲java线程的几种常见的创建方式:
①继承Thread类`...extends Thread`
②覆写Runnable()接口
③覆写Callable()接口,覆写call()方法
线程池:ThreadPoolExecutor
线程池的构造函数参数多达7个
corePoolSize:线程池中核心线程数的最大值
如果ThreadPoolExecutor.execute的任务数大于corePoolSize,那么就进入队列BlockingQueue,如果BlockingQueue满了会继续创建新线程、一直到线程个数大于第二个参数maximumPoolSize。在刚创建ThreadPoolExecutor的时候线程不会立即启动,而是等到了有任务要执行才会启动。
maximumPoolSize:允许创建的最大线程数、如果BlockingQueue已经满了、线程数等于maximumPoolSize 则会执行ThreadPoolExecutor的拒绝策略
keepAliveTime:表示空闲线程的存活时间
TimeUnit unit:表示keepAliveTime的单位
workQueue:队列,当线程在大于核心线程数和小于最大线程数的时候,线程在队列中。
handler:拒绝策略
当没有多余线程执行的时候就会触发相对应的拒绝策略
ThreadPoolExecutor.AbortPolicy():抛出异常
ThreadPoolExecutor.CallerRunsPolicy():由向线程池提交任务的线程来执行该任务
ThreadPoolExecutor.DiscardPolicy():抛弃当前的任务
ThreadPoolExecutor.DiscardOldestPolicy():抛弃最旧的任务(最先提交而没有得到执行的任务)
创建线程的3种方式,线程池的参数详解
最新推荐文章于 2024-09-06 21:29:47 发布
关键词由CSDN通过智能技术生成