Java スレッド スケジューリングの方法は次のとおりです。 1. 協調スレッド スケジューリング マルチスレッド システムは協調スケジューリングを採用し、スレッドの実行時間はスレッド自体によって制御されます。 2. プリエンプティブ スレッド スケジューリング プリエンプティブ スケジューリング マルチスレッド システムを使用すると、各スレッドの実行時間がシステムによって割り当てられます。
このチュートリアルの動作環境: Windows 7 システム、Java 10 バージョン、DELL G3 コンピューター。
1. 協調スレッドスケジューリング
マルチスレッド システムは協調スケジューリングを採用しており、スレッドの実行時間はスレッド自体によって制御され、スレッドが作業を完了すると、別のスレッドに切り替えるようにシステムに積極的に通知されます。協調マルチスレッドの利点は、スレッドが自身の作業を完了した後にスレッドを切り替えるため、実装が簡単であることです。そのため、スレッドの同期の問題は通常発生しません。欠点も明らかです。スレッドの実行時間を制御することができず、スレッドのコードが正しく書かれておらず、システムがスレッドを切り替えることができない場合、プログラムは常にブロックされてしまいます。
2. プリエンプティブなスレッドのスケジューリング
プリエンプティブ スケジューリング マルチスレッド システムを使用すると、各スレッドの実行時間はシステムによって割り当てられ、スレッドの切り替えはプロセス自体によって決定されません。たとえば、Java には、実行時間をアクティブに放棄できる Thread::yield() メソッドがありますが、実行時間をアクティブに取得したい場合、スレッド自体には方法がありません。このようにして、スレッドのスケジューリングが実装され、スレッドの実行時間がシステムによって制御されます。1 つのスレッドがプロセス全体、さらにはシステム全体をブロックする問題は発生しません。
上記は Java スレッド スケジューリングの 2 つの方法であり、皆様のお役に立てば幸いです。