【问题标题】:Which is more expensive? Keeping threads running in Thread Pool or Creating new Thread?哪个更贵?保持线程在线程池中运行或创建新线程?
【发布时间】:2017-10-13 10:09:11
【问题描述】:

创建新线程被认为是一项昂贵的任务。但是在 thread Pull 中,我们创建了许多线程并保持它们运行,即使没有任务可以执行。为什么保持空闲线程运行而不是在需要时创建线程并不更昂贵?虽然线程是空闲的,但它们必须占用固定内存、操作系统调度等资源。那么线程池如何更优化呢?

【问题讨论】:

    标签: multithreading threadpool


    【解决方案1】:

    因为创建和销毁线程的成本很高。如果你的线程是空闲的,那么你就没有很多工作要做。当你没有很多工作要做时,你不需要高效工作,当你确实有很多工作要做时,你需要高效工作。

    【讨论】:

    • 但是资源分配发生在我们调用 start() 方法的时候。对于空闲线程,已经调用了 start() 方法。那么哪里可以节省开支呢?
    • 成本节省来自不必创建和销毁线程,而是重新使用它们。线程池还有其他好处,但这通常是最大的好处。
    猜你喜欢
    • 1970-01-01
    • 2012-06-06
    • 2020-01-06
    • 1970-01-01
    • 2023-02-02
    • 2017-06-26
    • 1970-01-01
    • 2011-11-23
    • 2011-02-19
    相关资源
    最近更新 更多