質問1:マルチスレッドを実装する方法はいくつありますか?同期を実現する方法はいくつありますか?
マルチスレッド、それぞれ、達成するための2つの方法があります
継承Threadクラスを
して
Runnableを実装するには、を
同期を実現するには、同期、待機、通知の2つの方法があります。
wait():スレッドを待機状態にし、保持されているオブジェクトのロックを解放します。
sleep():実行中のスレッドをスリープにします。これは静的メソッドです。このメソッドを呼び出して、InterruptedException例外をキャッチします。
notify():待機状態でスレッドをウェイクアップします。このメソッドが呼び出されると、待機状態で特定のスレッドをウェイクアップすることはできませんが、JVMは優先順位に従ってではなく、どのスレッドをウェイクアップするかを決定します。
Allnotity():待機状態にあるすべてのスレッドをウェイクアップします。すべてのウェイクアップスレッドにオブジェクトロックを付与するのではなく、それらを競合させることに注意してください。
sleep():実行中のスレッドをスリープにします。これは静的メソッドです。このメソッドを呼び出して、InterruptedException例外をキャッチします。
notify():待機状態でスレッドをウェイクアップします。このメソッドが呼び出されると、待機状態で特定のスレッドをウェイクアップすることはできませんが、JVMは優先順位に従ってではなく、どのスレッドをウェイクアップするかを決定します。
Allnotity():待機状態にあるすべてのスレッドをウェイクアップします。すべてのウェイクアップスレッドにオブジェクトロックを付与するのではなく、それらを競合させることに注意してください。
質問2:スレッドの開始にrun()またはstart()が使用されていますか?
注:スレッドの開始とは、start()メソッドを呼び出してスレッドを準備し、将来実行するようにスケジュールすることです。スレッドは、特定の実行コードに関連付ける必要があります。run()メソッドは、スレッドに関連付けられた実行コードです。
質問3:スレッドがオブジェクトの同期メソッドに入ると、他のスレッドがこのオブジェクトの他のメソッドに入ることができますか?
いいえ、オブジェクトの同期メソッドは1つのスレッドのみがアクセスできます。
オブジェクトの同期メソッドに入ることができませんが、他の非同期メソッドには引き続きアクセスできます。