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);
这一线程池将建立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
ThreadPoolExecutorexecutor=(ThreadPoolExecutor)Executors.newFixedThreadPool(4);
内容来自zvvq,别采集哟
//序列内有任务后,递交任务到线程池
while(!imageQueue.isEmpty()){
Imageimage=imageQueue.poll(); copyright zvvq
executor.submit(()->{
内容来自samhan666
//解决图象
内容来自samhan666
... copyright zvvq
});
copyright zvvq
}
//等候全部任务执行完毕
executor.shutdown();
executor.awaitTermination(1,TimeUnit.HOURS); zvvq
在这个案例中,创建了一个包括4个核心线程固定尺寸线程池,用来处理图象任务。线程池会自动管理进程,保证图象任务以并发的方法被处理。 zvvq
以上就是Java并发编程中,架构怎么管理线程池?的详细内容,大量请关注其他类似文章! 内容来自zvvq,别采集哟