240 发简信
IP属地:黑龙江
  • 程序测试建议两点修改:
    1.ExecutorService先执行一百个任务把线程创建好后,然后再开始计时执行真实的任务
    2.自定义线程是否执行完,直接通过任务数统计,而不是看某一个线程的完成状态

    Java 线程池模型的思考和选择(已更新)

    多谢 风水 同学提出的问题。我重新研究了下源代码,纠正下我之前存在的错误的理论。于是对之前的文章做了修正,之前对大家引起的误导表示非常道歉。 这里对之前的文章重新进行了下梳理...

  • 1.bug:
    a.自定义线程执行结束判断怎么是看的第99个线程的状态,多线程并发执行的,最后一个启动的未必最后一个执行完。
    b.自定义任务有可能死循环,线程启动后如果任务已经被其他线程跑完会死循环。当然任务数很大,可能作者没遇见。
    2.性能方面:excutorService既然是线程池,不可能每次执行任务再创建线程。你测出来这个结果,是因为这个线程池你只用了一次,还没达到corePoolSize,线程池核心线程数量都还没初始化好,你可以跑两遍那个100的循环看一看结果。
    3.稳定性方面:
    因为作者提到了稳定性用自定义的好,个人感觉肯定还是系统自带的好。这个自定义的线程池,没有状态检查的,执行一段乱七八糟的任务后,指不定线程是不是都还活着。比如我随便写一个任务里面加一行代码Thread.interrupt,提交上去可能就会灭掉线程池中一个线程。

    Java 线程池模型的思考和选择(已更新)

    多谢 风水 同学提出的问题。我重新研究了下源代码,纠正下我之前存在的错误的理论。于是对之前的文章做了修正,之前对大家引起的误导表示非常道歉。 这里对之前的文章重新进行了下梳理...