java并发编程

java异步编程

1.创建线程池

public final class ConcurrentUtils {

	private static final ExecutorService POOL;

    private static final ListeningExecutorService poolService;

    static {
        POOL = new ThreadPoolExecutor(
                4,
                8,
                0L,
                TimeUnit.SECONDS, new LinkedBlockingQueue<>(2048),
                new ThreadFactoryBuilder().setNameFormat("doc-asyn-pool-%d").build(),
                new ThreadPoolExecutor.AbortPolicy());
        poolService = MoreExecutors.listeningDecorator(POOL);
    }

ThreadPoolExecutor 是 Java 中用于管理线程池的类。

最小和最大线程数: POOL 被配置为拥有最小4个线程和最大8个线程。这意味着即使没有任务执行,线程池也会维持4个线程的活跃状态,以便能够快速响应任务的到来。同时,最多允许同时存在8个活跃的线程。

keepAliveTime 空闲线程存活时间
一个线程如果处于空闲状态,并且当前的线程数量大于corePoolSize,那么在指定时间后,这个空闲线程会被销毁,这里的指定时间由keepAliveTime来设定,这在某些场景下可以帮助释放系统资源。

LinkedBlockingQueue<>(2048)
是一个阻塞队列,用于存储等待执行的任务,最大容量为2048

ThreadFactoryBuilder().setNameFormat("doc-asyn-pool-%d").build()
创建一个线程工厂,用于为线程池中的线程命名,格式为 "doc-asyn-pool-1","doc-asyn-pool-2" 等

new ThreadPoolExecutor.AbortPolicy()
是一个饱和策略,当队列和线程池都满了之后,新任务将被丢弃,并抛出RejectedExecutionException 异常

poolService = MoreExecutors.listeningDecorator(POOL)
使用 Guava 的 MoreExecutors.listeningDecorator 方法来创建一个监听器装饰的线程池,使得线程池支持异步操作,返回一个 ListeningExecutorService

posted @ 2024-06-27 14:21  zhangyf1121  阅读(3)  评论(0编辑  收藏  举报