首页后端开发JAVAjava线程池和并发集合(一)

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

时间2023-04-05 16:46:01发布访客分类JAVA浏览539
导读:一、线程池线程池是一种常见的线程管理方式,它可以复用线程,提高线程的利用率,减少线程的创建和销毁的开销,从而提高程序的性能。Java中提供了ThreadPoolExecutor类来实现线程池。ThreadPoolExecutor类Threa...

一、线程池

线程池是一种常见的线程管理方式,它可以复用线程,提高线程的利用率,减少线程的创建和销毁的开销,从而提高程序的性能。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

若转载请注明出处: java线程池和并发集合(一)
本文地址: https://pptw.com/jishu/1874.html
java线程池和并发集合(二) 张孝祥java就业面试题大全

游客 回复需填写必要信息