前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java线程池和并发集合(一)

java线程池和并发集合(一)

原创
作者头像
堕落飞鸟
发布2023-04-04 08:57:48
1560
发布2023-04-04 08:57:48
举报
文章被收录于专栏:飞鸟的专栏

一、线程池

线程池是一种常见的线程管理方式,它可以复用线程,提高线程的利用率,减少线程的创建和销毁的开销,从而提高程序的性能。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:固定大小线程池,创建时需要指定线程池的大小,当线程池中的线程都在执行任务时,新的任务需要等待。示例代码如下:

代码语言:javascript
复制
ExecutorService executor = Executors.newFixedThreadPool(10);
executor.execute(new Runnable() {
    @Override
    public void run() {
        // 任务执行代码
    }
});
executor.shutdown();

(2)SingleThreadPool:单线程线程池,只有一个线程在执行任务,用于需要顺序执行任务的场景。示例代码如下:

代码语言:javascript
复制
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable() {
    @Override
    public void run() {
        // 任务执行代码
    }
});
executor.shutdown();

(3)CachedThreadPool:可缓存线程池,线程池的大小会根据需要动态调整,线程池中的空闲线程会在60秒后自动回收。示例代码如下:

代码语言:javascript
复制
javaCopy codeExecutorService executor = Executors.newCachedThreadPool();
executor.execute(new Runnable() {
    @Override
    public void run() {
        // 任务执行代码
    }
});
executor.shutdown();

(4)ScheduledThreadPool:定时执行任务的线程池,可以设置任务的执行时间和执行周期。示例代码如下:

代码语言:javascript
复制
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:拒绝策略,用于当任务队列满时拒绝新的任务

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、线程池
    • ThreadPoolExecutor类
      • 线程池类型
        • 线程池的配置参数
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档