zvvq技术分享网

Java并发编程中,框架如何管理线程池?(java线程

作者:zvvq博客网
导读java并发编程中,线程池是通过threadpoolexecutor、abstractexecutorservice和executors类管理的。线程池的创建可以通过executors工厂方法实现,大小可以通过setcorepoolsize和setmaximumpoolsize方法调整,而

java并发编程中,线程池是由threadpoolexecutor、abstractexecutorservice和executors类管理的。线程池的创建能通过executors工厂方式完成,尺寸能通过setcorepoolsize和setmaximumpoolsize方式调节,而递交任务、监管线程池工作状态与处理任务能通过executor.submit()、getpoolsize()、getactivecount()、getcompletedtaskcount()等方式完成。在实战中,线程池适合于并发处理图象任务,通过自动管理进程,提升任务处理效率。 内容来自zvvq

zvvq

Java并发编程中,架构怎么管理线程池 内容来自samhan

线程池是Java并发编程的重要方式,用以管理与复用进程,降低线程创建和销毁的花销。在Java并发框架中,线程池由以下几种类负责:

内容来自zvvq

ThreadPoolExecutor:承担创建和管理线程池。 AbstractExecutorService:给予线程池的通用接口。 Executors:给予建立各种线程池的工厂方法。建立线程池

zvvq

应用Executors工厂方式能够轻松建立线程池: 内容来自zvvq

ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(10);

zvvq好,好zvvq

这一线程池将建立10个核心线程,并且不会建立额外非核心线程。

zvvq好,好zvvq

管理线程池尺寸

zvvq

ThreadPoolExecutor带来了方式来动态管理线程池尺寸: 内容来自samhan

setCorePoolSize(int corePoolSize):设定核心线程数。setMaximumPoolSize(int maximumPoolSize):设定最大线程数。解决任务

本文来自zvvq

能够递交任务到线程池,由线程池里的进程实行: 内容来自zvvq,别采集哟

executor.submit(()->{ 内容来自samhan666

//任务逻辑 内容来自zvvq

}); 内容来自zvvq,别采集哟

监管线程池

zvvq好,好zvvq

ThreadPoolExecutor带来了方式来监管线程池的运行状态,比如:

本文来自zvvq

getPoolSize():回到当前线程池尺寸。getActiveCount():回到当前活动线程数。getCompletedTaskCount():回到已解决的问题数。实战案例

zvvq.cn

假设有一个解决图像的任务队列。能够创建一个线程池来处理这些任务: zvvq.cn

ThreadPoolExecutorexecutor=(ThreadPoolExecutor)Executors.newFixedThreadPool(4);

内容来自zvvq,别采集哟

//序列内有任务后,递交任务到线程池

copyright zvvq

while(!imageQueue.isEmpty()){

zvvq好,好zvvq

Imageimage=imageQueue.poll(); copyright zvvq

executor.submit(()->{

内容来自samhan666

//解决图象

内容来自samhan666

... copyright zvvq

});

copyright zvvq

}

zvvq.cn

//等候全部任务执行完毕

内容来自samhan666

executor.shutdown();

copyright zvvq

executor.awaitTermination(1,TimeUnit.HOURS); zvvq

在这个案例中,创建了一个包括4个核心线程固定尺寸线程池,用来处理图象任务。线程池会自动管理进程,保证图象任务以并发的方法被处理。 zvvq

以上就是Java并发编程中,架构怎么管理线程池?的详细内容,大量请关注其他类似文章! 内容来自zvvq,别采集哟