追踪图
今日从一个技术点追踪下去的路线,做一个记录,没有形成结论(避免误导别人)

发现问题
写一个main测试
任务执行完毕后程序没有退出,过会才退出
最后追踪到
Executors.newCachedThreadPool()
针对他单独测试:
//http://www.javapractices.com/topic/TopicAction.do?Id=250
//https://stackoverflow.com/questions/29098117/shutdown-or-not-shutdown-in-executorservice-java8
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.submit(new Runnable() {
@Override
public void run() {
System.out.println("test");
}
});
有时候不是文档没看,而是没有意识到某句话什么意思

写的很清楚,Thread 60s没有使用则被杀死,并移除cache
关于 ForkJoinPool
JDK1.7新增,由 思想领袖Doug Lea 主刀
核心思想是 线程各自领取任务后 执行,有的任务重,有的任务轻
引入一种Steal 思想: 空闲线程会去繁忙线程那里偷取任务,避免做完手头任务,进入wait 白白等待
参见:
ForkJoinPool:
https://www.oracle.com/technetwork/articles/java/fork-join-422606.html
ExecutorService的关闭问题:
http://www.javapractices.com/topic/TopicAction.do?Id=250
https://stackoverflow.com/questions/29098117/shutdown-or-not-shutdown-in-executorservice-java8
Cache Miss
https://dzone.com/articles/cache-miss-example-in-java
网友评论