开发者社区> 问答> 正文

关于java线程,spring 线程池的问题

大家好:
我现在有几个疑惑的地方
1、如果使用spring 线程池,或者java自带的线程池,那应用程序中的所有线程都
受到创建的这个线程池管理,还是只通过线程池.execute加进去的才被管理。
2、spring MVC 线程池threadPoolTaskExecutor, 配置了最少活跃线程10个,最大10个,
那如果线程池中已经有10个活跃的线程在执行,如果继续往线程池中execute,此时的线程
是出于等待,还是直接挂掉,这个spring的线程池有配置项做这个么。
3、如果一个线程new出对象,没有start()或者没有加入到线程池中,那么此时这个new出的
线程对象浪费资源么,结束 难道就是java内存回收时么?

展开
收起
小旋风柴进 2016-03-04 16:12:37 3151 0
2 条回答
写回答
取消 提交回答
  • 1、线程池只会管理 “线程池.execute加进去”的线程;
    2、threadPool 中如过有core size个活跃线程,新加入的任务会进入队列,如果队列满了,则会创建新线程,直到线程数量达到maxSize为止。如果此时还有任务不断加入,则会丢弃。
    3、如果线程new 出来,但是没有start。那么他就是一个普通的java对象,如果没有其它对象引用它,那么它就会在下次GC时回收

    2019-07-17 18:52:27
    赞同 展开评论 打赏
  • 1、只通过线程池启动的线程,才会受到线程池管制。
    2、spring 线程池有自己的实现,看spring的源码,他会有一定的步骤,首先判断线程池中是否有闲的线程,如果没有,将任务加到队列中,而队列是自己
    配置的,最后如果都没有,则挂掉。
    3、线程new Thread() 只是创建了一个任务,并没有start() 或者 加到线程池中,相比只是创建一个java对象,回收机制会回收。

    2019-07-17 18:52:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载