程序测试建议两点修改:
1.ExecutorService先执行一百个任务把线程创建好后,然后再开始计时执行真实的任务
2.自定义线程是否执行完,直接通过任务数统计,而不是看某一个线程的完成状态
Java 线程池模型的思考和选择(已更新)多谢 风水 同学提出的问题。我重新研究了下源代码,纠正下我之前存在的错误的理论。于是对之前的文章做了修正,之前对大家引起的误导表示非常道歉。 这里对之前的文章重新进行了下梳理...
程序测试建议两点修改:
1.ExecutorService先执行一百个任务把线程创建好后,然后再开始计时执行真实的任务
2.自定义线程是否执行完,直接通过任务数统计,而不是看某一个线程的完成状态
Java 线程池模型的思考和选择(已更新)多谢 风水 同学提出的问题。我重新研究了下源代码,纠正下我之前存在的错误的理论。于是对之前的文章做了修正,之前对大家引起的误导表示非常道歉。 这里对之前的文章重新进行了下梳理...
1.bug:
a.自定义线程执行结束判断怎么是看的第99个线程的状态,多线程并发执行的,最后一个启动的未必最后一个执行完。
b.自定义任务有可能死循环,线程启动后如果任务已经被其他线程跑完会死循环。当然任务数很大,可能作者没遇见。
2.性能方面:excutorService既然是线程池,不可能每次执行任务再创建线程。你测出来这个结果,是因为这个线程池你只用了一次,还没达到corePoolSize,线程池核心线程数量都还没初始化好,你可以跑两遍那个100的循环看一看结果。
3.稳定性方面:
因为作者提到了稳定性用自定义的好,个人感觉肯定还是系统自带的好。这个自定义的线程池,没有状态检查的,执行一段乱七八糟的任务后,指不定线程是不是都还活着。比如我随便写一个任务里面加一行代码Thread.interrupt,提交上去可能就会灭掉线程池中一个线程。
Java 线程池模型的思考和选择(已更新)多谢 风水 同学提出的问题。我重新研究了下源代码,纠正下我之前存在的错误的理论。于是对之前的文章做了修正,之前对大家引起的误导表示非常道歉。 这里对之前的文章重新进行了下梳理...