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

内容来自samhan666

Java并发编程中,架构怎么管理线程池

内容来自zvvq

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

内容来自samhan666

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

内容来自zvvq

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

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

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

zvvq

管理线程池尺寸

zvvq.cn

ThreadPoolExecutor带来了方式来动态管理线程池尺寸: zvvq好,好zvvq

setCorePoolSize(int corePoolSize):设定核心线程数。setMaximumPoolSize(int maximumPoolSize):设定最大线程数。解决任务 内容来自zvvq,别采集哟

能够递交任务到线程池,由线程池里的进程实行: 本文来自zvvq

executor.submit(()->{

内容来自zvvq,别采集哟

//任务逻辑 zvvq好,好zvvq

});

内容来自samhan

监管线程池

内容来自samhan

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

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

zvvq好,好zvvq

假设有一个解决图像的任务队列。能够创建一个线程池来处理这些任务: 内容来自zvvq,别采集哟

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

内容来自samhan666

//序列内有任务后,递交任务到线程池 内容来自samhan

while(!imageQueue.isEmpty()){

zvvq好,好zvvq

Imageimage=imageQueue.poll();

内容来自zvvq

executor.submit(()->{

zvvq.cn

//解决图象 内容来自samhan666

...

copyright zvvq

}); zvvq好,好zvvq

} copyright zvvq

//等候全部任务执行完毕 内容来自samhan666

executor.shutdown();

copyright zvvq

executor.awaitTermination(1,TimeUnit.HOURS);

内容来自zvvq,别采集哟

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

copyright zvvq

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