java中线程池的创建与使用,线程池的创建方式有几种
本文介绍了java的一些知识,主要介绍了创建java线程池的四种方法,并对它们进行了详细的分析。连接池是创建和管理连接缓冲池的技术。这些连接可供任何需要它们的线程使用。下面我们一起来看看,希望对你有所帮助。
如何解决写爬虫IP受阻的问题?立即使用。
前言
在说线程池之前,请先补充一下连接池的定义。
连接池是创建和管理连接缓冲池的技术,任何需要它们的线程都可以使用它。
可以看到其连接池的作用如下:
1. 线程池
线程池(英语:thread pool):线程使用模式。线程太多会带来调度开销,影响缓存局部性和整体性能。线程池维护多个线程,等待管理程序分配可以并发执行的任务。这避免了在处理短期任务时创建和销毁线程的开销。线程池既能保证内核的充分利用,又能防止过度调度。
特点:
降低资源消耗: 通过重用创建的线程,减少线程创建和销毁造成的消耗。提高响应速度:当一个任务到达时,可以立即执行,而不需要等待线程被创建。增加线程数量的可管理性: 是一种稀缺资源。如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性。使用线程池可以进行统一的分配、调优和监控。其功能为:
重用现有线程,降低对象创建和死亡的代价,可以有效控制最大并发线程数,提高系统资源利用率,避免过度的资源竞争和拥塞。提供常规执行、常规执行、单线程、并发控制等功能。
具体其架构如下所示:
2. 创建方式
有四种创建方法:一个带有一个线程的池,一个带有n个线程的池,一个带有可扩展线程的池,一个带有定时和周期性线程的池。
执行人。newfixedthreadpool(int)n个线程的池,控制最大并发数,多余的线程会在队列中等待。
ExecutorService thread pool 1=executors . newfixedthreadpool(5);//5 window executors . newsinglethreadexecutor()一个池一个线程。
ExecutorService thread pool 2=executors . newsinglethreadexecutor();//一个窗口,Executors.newCachedThreadPool(),一个池可以根据需求扩展创建线程,空闲线程可以灵活回收。
执行完线程后,可以继续使用,无需扩展。
ExecutorService thread pool 3=executors . newcachedthreadpool();执行人。newscheduledthreadpool()支持计划的和定期的任务执行。
//表示延迟一秒,然后执行三秒。
ScheduledExecutorService scheduledThreadPool=executors . newscheduledthreadpool(5);
scheduledthreadpool . scheduleatfixedrate(new Runnable(){
@覆盖
公共无效运行(){
log.info(延迟1秒,每3秒执行一次);
}
},1,3,时间单位。秒);推荐:以上《java视频教程》是创建java线程池的四种方式的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。