java线程池和并发集合(一)
一、线程池
线程池是一种常见的线程管理方式,它可以复用线程,提高线程的利用率,减少线程的创建和销毁的开销,从而提高程序的性能。Java中提供了ThreadPoolExecutor类来实现线程池。
ThreadPoolExecutor类
ThreadPoolExecutor类是Java中实现线程池的类,它提供了多种构造方法和配置参数,可以根据实际需要创建不同类型的线程池。ThreadPoolExecutor类的主要方法包括:
(1)execute(Runnable command):提交任务到线程池中执行。
(2)shutdown():关闭线程池。
(3)awaitTermination(long timeout, TimeUnit unit):等待所有任务执行完成。
线程池类型
Java中提供了四种线程池类型,分别为:FixedThreadPool、SingleThreadPool、CachedThreadPool和ScheduledThreadPool。
(1)FixedThreadPool:固定大小线程池,创建时需要指定线程池的大小,当线程池中的线程都在执行任务时,新的任务需要等待。示例代码如下:
ExecutorService executor = Executors.newFixedThreadPool(10);
executor.execute(new Runnable() {
@Override
public void run() {
// 任务执行代码
}
}
);
executor.shutdown();
(2)SingleThreadPool:单线程线程池,只有一个线程在执行任务,用于需要顺序执行任务的场景。示例代码如下:
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable() {
@Override
public void run() {
// 任务执行代码
}
}
);
executor.shutdown();
(3)CachedThreadPool:可缓存线程池,线程池的大小会根据需要动态调整,线程池中的空闲线程会在60秒后自动回收。示例代码如下:
javaCopy codeExecutorService executor = Executors.newCachedThreadPool();
executor.execute(new Runnable() {
@Override
public void run() {
// 任务执行代码
}
}
);
executor.shutdown();
(4)ScheduledThreadPool:定时执行任务的线程池,可以设置任务的执行时间和执行周期。示例代码如下:
javaCopy codeScheduledExecutorService executor = Executors.newScheduledThreadPool(10);
executor.schedule(new Runnable() {
@Override
public void run() {
// 任务执行代码
}
}
, 1, TimeUnit.SECONDS);
executor.shutdown();
线程池的配置参数
ThreadPoolExecutor类提供了多种配置参数,可以根据实际需要进行设置。其中常用的配置参数包括:
(1)corePoolSize:核心线程池大小。
(2)maximumPoolSize:最大线程池大小。
(3)keepAliveTime:线程池中空闲线程的存活时间。
(4)workQueue:任务队列,用于存储待执行的任务。
(5)threadFactory:线程工厂,用于创建线程。
(6)rejectedExecutionHandler:拒绝策略,用于当任务队列满时拒绝新的任务
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: java线程池和并发集合(一)
本文地址: https://pptw.com/jishu/1874.html