看了下代码:

public void run() {

try {

Runnable task = firstTask;

firstTask = null;

while (task != null || (task = getTask()) != null) {

runTask(task);

task = null;

}

} finally {

workerDone(this);

}

}

在发现队列里面没有任务的时候,会在workerDone中将线程remove掉,所以没有楼主担心的这个问题吧?

在创建线程池的时候,第一个参数是corePoolSize,这个参数在execute里面看到作用:

public void execute(Runnable command) {

if (command == null)

throw new NullPointerException();

if (poolSize >= corePoolSize || !addIfUnderCorePoolSize(command)) {

if (runState == RUNNING && workQueue.offer(command)) {

if (runState != RUNNING || poolSize == 0)

ensureQueuedTaskHandled(command);

}

else if (!addIfUnderMaximumPoolSize(command))

reject(command); // is shutdown or saturated

}

}

如果poolsize

如果poolsize >= corePoolSize的时候,那么就将任务放到阻塞队列里面去。

所以我觉得corePoolSize是用来影响提交任务时的策略。。

另外,线程常驻内存当然是占用内存的,但是线程资源占用的量是很小的,但是我们用来实现逻辑的其他资源占用内存的量就不好说啦。

java多线程 占用内存_java线程池常驻线程占内存吗相关推荐

  1. java开源线程池_线程池 - Java 并发性和多线程 - UDN开源文档

    线程池 线程池(Thread Pool)对于限制应用程序中同一时刻运行的线程数很有用.因为每启动一个新线程都会有相应的性能开销,每个线程都需要给栈分配一些内存等等. 我们可以把并发执行的任务传递给一个 ...

  2. Java多线程系列 JUC线程池01 线程池框架

    转载  http://www.cnblogs.com/skywang12345/p/3509903.html 为什么引入Executor线程池框架 new Thread()的缺点 1. 每次new T ...

  3. java线程池返回线程状态_Java线程的不同状态

    java线程池返回线程状态 介绍 在Java中,线程可以具有状态. Thread.State枚举定义Java线程可以具有的不同状态. 该枚举定义了以下值– 新 可运行 已封锁 等候 TIMED_WAI ...

  4. Java多线程(7)--线程池创建线程

    经常创建和销毁.使用量特别大的资源,比如并发情况下的线程,对性能影响很大. 提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中,可以避免频繁创建销毁.实现重复利用. 使用线程池好处: ① ...

  5. 由浅入深理解Java线程池及线程池的如何使用

    前言 多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担.线程本身也要占用内存空间,大量的线程会占用内存资源并且可能会导致Out of Memory ...

  6. Python 多线程总结(2)— 线程锁、线程池、线程数量、互斥锁、死锁、线程同步

    主要介绍使用 threading 模块创建线程的 3 种方式,分别为: 创建 Thread 实例函数 创建 Thread 实例可调用的类对象 使用 Thread 派生子类的方式 多线程是提高效率的一种 ...

  7. java 多线程并发 问题_JAVA多线程和并发基础面试问答

    原文链接 译文连接作者:Pankaj  译者:郑旭东  校对:方腾飞 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌 ...

  8. java线程池1001java线程池_深入浅出Java(Android )线程池ThreadPoolExecutor

    前言 关于线程池 在Java/Android开发中,设计到并发的请求,那基本上是离不开线程池了.用线程池的好处: 1.减少线程频繁创建.销毁的开销: 2.好控制并发量,降低OOM的可能,至于原因文中会 ...

  9. linux下c语言线程传参数,【linux】C语言多线程中运行线程池,在线程池中运行线程池,,传递的结构体参数值为空/NULL/0...

    C语言多线程中运行线程池,在线程池中运行线程池,,传递的结构体参数值为空/NULL/0 本贴问题,之前已经提问过一次,当时已经解决了,原贴在这里https://segmentfault.com/q/1 ...

最新文章

  1. linux运维 对比 网络_linux运维、架构之路-网络基础
  2. Vue基础之事件处理器
  3. 【AI视野·今日CV 计算机视觉论文速览 第164期】Fri, 18 Oct 2019
  4. 那年我学过的Spring笔记
  5. 百分点感知智能实验室:语音识别技术发展阶段探究
  6. RS-485接口详解
  7. C++的O2、O3到底是个什么鬼
  8. 中科院王晓群课题组建立血管化类脑器官培养新体系
  9. 应急响应—常见应急响应处置思路
  10. 定义一个表示学生信息的类Student,要求如下:
  11. 从 Server Timing Header 看服务器是如何处理请求的
  12. linux 设置u盘为只读模式,U盘如何设置为只读模式
  13. const int *,const int * const和int const *之间的区别
  14. Linux中CentOS 7如何联网?
  15. oracle学生考勤,Oracle数据库课程设计――学生考勤系统的Oracle实现1
  16. 漫谈粗放与精益:编程的两种思路与方式
  17. 数字化招聘:猎聘、快手同行不同路
  18. 学会感恩,停停走走才能学有所思
  19. 【驱动代码移植高通平台之二十三】高通平台i2c设备驱动
  20. 操作系统精选习题——第六章

热门文章

  1. 实战PyQt5: 141-QChart图表之箱形图
  2. ele ui 清空选项和重新校验
  3. Java中关于数组的初始化方式
  4. js获取最近12个月的时间
  5. php程序员 一万小时定律,科学网—一万小时定律——阅读笔记 - 贾琳的博文
  6. 使用resetFields点击取消时,没有清空「el-form」的内容
  7. NetBeans的学习资源
  8. php 模板 下载xml,模板用xml的思路_PHP
  9. [异常检测] Regularity Learning via Explicit Distribution Modeling for Skeletal Video Anomaly Detection
  10. [计算机视觉] AprilTag: A robust and flexible visual fiducial system(2011)论文理解