本文主要是介绍50-java 线程池的核心主件和核心类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在Java中,ThreadPoolExecutor
是线程池的核心类,它在java.util.concurrent
包中。Executors
是一个工厂类,它提供了一些方便的方法来创建不同类型的线程池。
以下是创建线程池的核心类和方法:
-
ThreadPoolExecutor
:构造方法:
public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler)
-
参数说明
-
corePoolSize
:线程池中的常驻核心线程数。 -
maximumPoolSize
:线程池中允许的最大线程数。 -
keepAliveTime
:非核心线程的空闲时间,超时自动终止。 -
unit
:keepAliveTime
的时间单位 -
workQueue
:任务队列,被提交但未被执行的任务。 -
threadFactory
:线程工厂,用于创建线程。 -
handler
:拒绝策略,当任务太多无法处理时的策略。
-
Executors
:静态方法:
public static ExecutorService newFixedThreadPool(int nThreads)
public static ExecutorService newCachedThreadPool()
public static ExecutorService newSingleThreadExecutor()
// 等等
-
-
方法说明:
-
newFixedThreadPool(int nThreads)
:创建固定大小的线程池。 -
newCachedThreadPool()
:创建一个可缓存的线程池,调用时创建线程,不使用时回收线程。 -
newSingleThreadExecutor()
:创建单线程化的线程池,按序执行任务。
-
-
以下是一个使用ThreadPoolExecutor
的简单示例:
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.Executor;public class ThreadPoolExample {public static void main(String[] args) {BlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>();ThreadPoolExecutor executor = new ThreadPoolExecutor(4, 8, 10, TimeUnit.SECONDS, queue);for (int i = 0; i < 10; i++) {executor.execute(new RunnableTask());}executor.shutdown(); // 关闭线程池,不再接受新任务,已经提交的任务继续执行完毕}static class RunnableTask implements Runnable {public void run() {// 执行任务的代码System.out.println("Task executed on thread: " + Thread.currentThread().getName());}}
}
以上代码创建了一个ThreadPoolExecutor
,并提交了10个简单的任务。线程池的核心线程数为4,最大线程数为8,超过核心线程数的非核心线程空闲时间为10秒。任务执行完毕后,关闭线程池。
这篇关于50-java 线程池的核心主件和核心类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!