java线程池有哪些,Java线程池的用法
如何解决写爬虫IP受阻的问题?立即使用。
java的线程池是什么,有哪些类型,作用分别是什么(推荐学习:java课程)
线程池是一种多线程处理形式,处理过程中将任务添加队列,然后在创建线程后自动启动这些任务,每个线程都使用默认的堆栈大小,以默认的优先级运行,并处在多线程单元中,如果某个线程在托管代码中空闲,则线程池将插入另一个辅助线程来使所有处理器保持繁忙。
如果所有线程池都一直很忙,但是队列中有挂起的作业,那么一段时间后线程池中的工作线程数将永远不会超过最大值。超过最大值的线程可以排队,但在其他线程完成之前不能启动。
java的线程池的顶层接口是执行器。执行器不是线程池,而是执行线程的工具,真正的线程池是ExecutorService。
java中的有哪些线程池?
1.newcachethreadpool创建一个可缓存的线程池。
2.newFixedThreadPool创建一个固定长度的线程池。
3.newScheduledThreadPool创建一个固定长度的线程池
4.newSingleThreadExecutor创建单线程线程池。
下面一一分析:
newCachedThreadPool,是一个线程数不确定的线程池,它的最大线程数是整数。MAX_VALUE,这是一个非常大的数字。它是一个可缓存的线程池。如果线程池的长度超过处理需要,它可以灵活地回收空闲线程。如果没有回收,它可以创建新的线程。但是,线程池中的所有空闲线程都有超时限制,即60秒。如果超过60秒,空闲线程将被回收。
调用execute将重用之前构造的线程(如果线程可用)。这种线程池适用于执行大量耗时较少的任务。当整个线程池空闲时,线程池中的线程将超时并停止。
newFixedThreadPool用指定数量的工作线程创建一个线程池。提交任务时,将创建一个工作线程。当线程空闲时,除非线程池关闭,否则它们不会被回收。如果工作线程的数量达到线程池的初始最大值,提交的任务将存储在池队列中(没有大小限制)。
因为newFixedThreadPool只有核心线程,并且这些核心线程不会被回收,所以它可以更快地响应外部请求。
newScheduledThreadPool 创建一个线程池,具有固定数量的核心线程和无限数量的非核心线程。当非核心线程空闲时,它们将被立即回收。它可以安排在给定的延迟后运行命令或定期执行它们。这种线程池主要用于执行定时任务和周期固定的重复性任务。
newSingleThreadExecutor这种线程池只有一个核心线程,并且这个线程是在一个无界队列中执行的,这样就不需要处理这些任务之间的线程同步问题。它确保所有任务都在同一个线程中按顺序执行,并且在任何给定时间都不能有多个线程处于活动状态。这就是java线程池的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。