java并发编程中,线程池是由threadpoolexecutor、abstractexecutorservice和executors类管理的。线程池的创建能通过executors工厂方式完成,尺寸能通过setcorepoolsize和setmaximumpoolsize方式调节,而递交任务、监管线程池工作状态与处理任务能通过executor.submit()、getpoolsize()、getactivecount()、getcompletedtaskcount()等方式完成。在实战中,线程池适合于并发处理图象任务,通过自动管理进程,提升任务处理效率。
Java并发编程中,架构怎么管理线程池
线程池是Java并发编程的重要方式,用以管理与复用进程,降低线程创建和销毁的花销。在Java并发框架中,线程池由以下几种类负责:
ThreadPoolExecutor:承担创建和管理线程池。 AbstractExecutorService:给予线程池的通用接口。 Executors:给予建立各种线程池的工厂方法。建立线程池
应用Executors工厂方式能够轻松建立线程池:
ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(10);
这一线程池将建立10个核心线程,并且不会建立额外非核心线程。
管理线程池尺寸
ThreadPoolExecutor带来了方式来动态管理线程池尺寸:
setCorePoolSize(int corePoolSize):设定核心线程数。setMaximumPoolSize(int maximumPoolSize):设定最大线程数。解决任务
能够递交任务到线程池,由线程池里的进程实行:
executor.submit(()->{
//任务逻辑
});
监管线程池
ThreadPoolExecutor带来了方式来监管线程池的运行状态,比如:
getPoolSize():回到当前线程池尺寸。getActiveCount():回到当前活动线程数。getCompletedTaskCount():回到已解决的问题数。实战案例
假设有一个解决图像的任务队列。能够创建一个线程池来处理这些任务:
ThreadPoolExecutorexecutor=(ThreadPoolExecutor)Executors.newFixedThreadPool(4);
//序列内有任务后,递交任务到线程池
while(!imageQueue.isEmpty()){
Imageimage=imageQueue.poll();
executor.submit(()->{
//解决图象
...
});
}
//等候全部任务执行完毕
executor.shutdown();
executor.awaitTermination(1,TimeUnit.HOURS);
在这个案例 中,创建了一个包括4个核心线程固定尺寸线程池,用来处理图象任务。线程池会自动管理进程,保证图象任务以并发的方法被处理。
以上就是Java并发编程中,架构怎么管理线程池?的详细内容,大量请关注其他类似文章!