`

java线程池自己掉进去的坑

 
阅读更多
java线程池的maximumPoolSize的生效条件真的是要注意下

在做防穿透cache的时候,有这样的以一个场景,平时需要的线程很少,偶尔会有比较高的并发,自己对Executors提供的几个方法都不怎么满意,决定自己写一个:

private static ExecutorService executorService = new ThreadPoolExecutor(1, 4,
            60L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), threadFactory)

但是后面发现,为什么一直是一个线程在跑呢?!!!
我明明设置最大线程是4,但是丝毫没有起作用
最大线程是在队列满了的情况才会生效,这里的队列大小的是int的最大值,是不可能满的。
最后自己的修改版:
private static ThreadPoolExecutor executorService = new ThreadPoolExecutor(4, 4,
       120L, TimeUnit.SECONDS,
        new LinkedBlockingQueue<Runnable>(), threadFactory);
static {
    executorService.allowCoreThreadTimeOut(true);
}

0
1
分享到:
评论
1 楼 cs6641468 2016-08-19  
理解的不错。
这是必然的,LinkedBlockingQueue默认size是Integer.MAX_VALUE, 相当于是无界queue.
这种情况下,maximumPoolSize 相当于是形同虚设.

相关推荐

    java线程池使用后到底要关闭吗

    java线程池使用后到底要关闭吗 java线程池是一种高效的并发编程技术,可以帮助开发者更好地管理线程资源,提高系统的性能和可靠性。然而,在使用java线程池时,一个常见的问题是:使用完线程池后到底要不要关闭?...

    java线程池封装j

    Java线程池是一种高效管理线程的技术,它允许开发者预定义一组线程,根据任务的需要灵活调度,而不是每次需要执行任务时都创建新的线程。这种设计模式大大提高了系统的性能,减少了系统资源的消耗,特别是在高并发...

    java线程池知识.ppt

    java线程池知识、

    Java 线程池.pptx

    讲述了java线程池的优点,参数,6种线程池的使用场景,线程池用到的handler,线程任务的提交方式等等。

    基于Java线程池技术实现Knock Knock游戏项目.zip

    基于Java线程池技术实现Knock Knock游戏项目.zip 基于Java线程池技术实现Knock Knock游戏项目.zip 基于Java线程池技术实现Knock Knock游戏项目.zip 基于Java线程池技术实现Knock Knock游戏项目.zip 基于Java线程池...

    自定义实现Java线程池

    ### 自定义实现Java线程池 #### 一、概述 在深入探讨自定义Java线程池之前,我们先简要回顾一下线程池的基本概念及其重要性。线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动...

    java线程池的源码分析.zip

    Java线程池是Java并发编程中的重要组成部分,它在多线程和高并发场景下扮演着关键角色。本文将深入探讨Java线程池的源码分析,并对比不同类型的线程池,以帮助开发者更好地理解和利用这一强大的工具。 首先,我们要...

    java线程池threadpool简单使用源码

    Java线程池(ThreadPool)是Java并发编程中的一个重要概念,它可以帮助我们有效地管理和控制并发执行的任务,从而提高系统的效率和稳定性。线程池通过复用已存在的线程,避免了频繁创建和销毁线程带来的开销,同时也...

    Java 线程池.docx

    Java线程池是一种高效管理线程资源的工具,它的出现是为了应对多线程编程中频繁创建和销毁线程带来的性能开销以及资源消耗。在Java中,通过使用线程池,我们可以预先创建一定数量的线程,这些线程在空闲时可以被复用...

    java 线程池示例(自己实现的参考别人的代码)

    NULL 博文链接:https://yulincqupt.iteye.com/blog/1673919

    java技术学习-基于Java线程池技术实现Knock Knock游戏项目(包含服务端、客户端两部分)

    java技术学习——基于Java线程池技术实现Knock Knock游戏项目(包含服务端、客户端两部分) java技术学习——基于Java线程池技术实现Knock Knock游戏项目(包含服务端、客户端两部分) java技术学习——基于Java...

    java线程池实例

    Java线程池是一种高效管理线程资源的工具,它通过维护一组可重用的线程来减少创建和销毁线程的开销。在Java中,`java.util.concurrent`包提供了`ExecutorService`接口和它的实现类,如`ThreadPoolExecutor`,来支持...

    java 线程池jxl动态写入Excel

    java 线程池jxl动态写入Excel

    JAVA线程池例子

    Java线程池是一种高效管理线程资源的技术,它允许开发者创建一组可重用的工作线程,从而避免频繁地创建和销毁线程带来的性能开销。线程池在Java中主要通过`java.util.concurrent`包中的`ExecutorService`接口及其...

    JAVA使用线程池查询大批量数据

    在Java开发中,处理大批量数据时,合理利用线程池可以显著提高程序的执行效率和资源利用率。本文将深入探讨如何在Java中使用线程池来查询大量数据,以及这样做的好处和实现方法。 首先,理解线程池的概念至关重要。...

    java线程池demo

    java线程池demo ,可以使用,自己创建项目,将类复制进去,可以测试。

    基于Java线程池技术的数据爬虫设计与实现.pdf

    本文所提及的基于Java线程池技术的数据爬虫设计与实现,不仅涉及到了数据爬虫的原理和架构,还包括了多线程编程的知识点,以及线程池技术在数据爬虫中的具体应用。 首先,数据爬虫的基本原理是模拟用户的点击行为,...

    Java线程池及观察者模式解决多线程意外死亡重启问题

    Java线程池是Java并发编程中的重要组成部分,它允许开发者高效地管理多个并发执行的线程,有效地控制系统的资源消耗,提高系统性能和稳定性。在Java中,`java.util.concurrent`包提供了`ExecutorService`接口及其...

    详细分析JAVA 线程池

    在Java 5以前,开发者必须手动实现自己的线程池。 4. Java 5中的Executors工厂类 从Java 5开始,Java内建支持线程池,引入了Executors工厂类,该工厂类包含多个静态工厂方法来创建线程池。 5. Executors工厂类中的...

    一个java线程池死锁的例子

    线程池里的线程等待等待队列里的线程执行,等待队列里的等待线程池里的完成,相互等待

Global site tag (gtag.js) - Google Analytics