大家好:
我现在有几个疑惑的地方
1、如果使用spring 线程池,或者java自带的线程池,那应用程序中的所有线程都
受到创建的这个线程池管理,还是只通过线程池.execute加进去的才被管理。
2、spring MVC 线程池threadPoolTaskExecutor, 配置了最少活跃线程10个,最大10个,
那如果线程池中已经有10个活跃的线程在执行,如果继续往线程池中execute,此时的线程
是出于等待,还是直接挂掉,这个spring的线程池有配置项做这个么。
3、如果一个线程new出对象,没有start()或者没有加入到线程池中,那么此时这个new出的
线程对象浪费资源么,结束 难道就是java内存回收时么?
1、线程池只会管理 “线程池.execute加进去”的线程;
2、threadPool 中如过有core size个活跃线程,新加入的任务会进入队列,如果队列满了,则会创建新线程,直到线程数量达到maxSize为止。如果此时还有任务不断加入,则会丢弃。
3、如果线程new 出来,但是没有start。那么他就是一个普通的java对象,如果没有其它对象引用它,那么它就会在下次GC时回收
1、只通过线程池启动的线程,才会受到线程池管制。
2、spring 线程池有自己的实现,看spring的源码,他会有一定的步骤,首先判断线程池中是否有闲的线程,如果没有,将任务加到队列中,而队列是自己
配置的,最后如果都没有,则挂掉。
3、线程new Thread() 只是创建了一个任务,并没有start() 或者 加到线程池中,相比只是创建一个java对象,回收机制会回收。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。