Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 哪个更贵?保持线程在线程池中运行还是创建新线程?_Multithreading_Threadpool - Fatal编程技术网

Multithreading 哪个更贵?保持线程在线程池中运行还是创建新线程?

Multithreading 哪个更贵?保持线程在线程池中运行还是创建新线程?,multithreading,threadpool,Multithreading,Threadpool,创建新线程被认为是一项昂贵的任务。但是在线程拉动中,我们创建了许多线程,即使没有可执行的任务,它们也会保持运行。为什么保持空闲线程运行并不比在需要时创建线程更昂贵?虽然线程是空闲的,但它们必须占用固定内存、操作系统调度等资源。那么线程池是如何以更优化的方式进行的呢 因为创建和销毁线程非常昂贵。如果线程处于空闲状态,那么就没有很多工作要做。当你没有很多工作要做时,你不需要高效地工作,当你有很多工作要做时,你需要高效地工作。但是资源分配发生在我们调用start()方法时。对于空闲线程,start()

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

因为创建和销毁线程非常昂贵。如果线程处于空闲状态,那么就没有很多工作要做。当你没有很多工作要做时,你不需要高效地工作,当你有很多工作要做时,你需要高效地工作。

但是资源分配发生在我们调用start()方法时。对于空闲线程,start()方法已被调用。那么,哪里可以节省开支呢?节省开支的原因是不必创建和销毁线程,而是重新使用它们。线程池还有其他好处,但这通常是最大的好处。