スレッドを眠っているとき、実際には何が起こっていますか?
スレッドをスリープ状態にすると、「現在のスレッドを一定期間一時停止」することがわかります。しかし、それはどのように機能するのでしょうか?
Thread.sleep()が内部でどのように動作し、Thread.sleepが実際にどのように動作するかによると?:
- スリープ期間は、システム固有の細分性の影響を受けます
- 睡眠が妨げられている
- スレッドはCPUを離れ、その実行を停止します
- スレッドはスリープ中にCPU時間を消費していません
これが何を意味するのかについての内部および基本的なメカニズムを完全に理解することはできません。
スレッド間の切り替えを担当するスケジューラと呼ばれるものがあることを理解しています。
ソースはこれがOS(またはハードウェア)によって異なることを示しているようで、ほとんどのスレッドには、CPUが別のスレッドに切り替える前にいくつかのアクションを実行するために1ミリ秒から60ミリ秒程度与えられます。
しかし、スレッドがスリープ状態になると(たとえば、数秒)、どのように再開しますか?タイマーが何らかの形で関与していると思いますが、それはマザーボードのクロックですか?CPUクロックレートに関連していますか?
タイマーが含まれている場合でも、CPUは、スレッドに再び注意を払う時期になったことをどのようにして知るのでしょうか。常にスレッドをチェックインして、準備ができているかどうかを確認する必要はありませんか?効果的ではないことを、ポーリングは、したがって、種類のされたCPU時間を消費しますか?
スレッドは言語固有にスリープしていますか、それともOSがスレッドを担当していますか、それともCPU固有のものですか?
誰かがスケジューラのようなものの基本的な説明とこれのすべての間にCPUが何をしているのかでこれを私に説明してくれませんか?