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