线程调度开销和上下文切换

时间:2016-01-02 11:48:12

标签: java scheduling context-switch

我只想清除我对多线程开销的概念。在BrianGöetz的Java书“Java Concurrency In Practice”中,我阅读了第11章第11.1节中的以下段落。

“虽然目标可能总体上是提高性能,但与单线程方法相比,使用多线程总是会带来一些性能成本。这些包括与协调之间相关的开销。 线程(锁定,信令,同步),增加的上下文切换,线程创建和拆除以及调度开销。“

为什么他将上下文切换开销和调度开销分开。线程调度开销与上下文切换开销不同。我对这两个概念感到困惑。

1 个答案:

答案 0 :(得分:0)

简单来说:

上下文切换表示在您的进程中,一个线程将进入等待/休眠状态,而其他线程将进入运行状态,即开始执行。这意味着存储进入等待状态的线程的当前状态并检索其他线程的当前状态,以便从进入等待状态的点开始执行该线程。

调度开销意味着一旦线程进入可运行状态(准备执行),操作系统就会将其重新安排到处理器之一以及可能需要的资源。