2016-03-26 33 views
0

インタビューで、マルチスレッドについて質問されました
Thread.yieldを呼び出すと、マルチスレッドで開いているリソースはどうなりますか? ()またはスリープ(100000)またはwait()メソッドを呼び出すことができます。 それは閉鎖されるか、それとも開かれるでしょうか? マルチスレッドを理解してください。JavaのThread.yield、sleep、waitメソッドのオープンリソースに何が起こるか

+0

「オープンリソース」とは何ですか? –

答えて

1

sleep(100000)スレッドは、指定された時間、スレッドの実行を停止させます。それまで開いていたリソースはすべて開いています。

yield()メソッドは、現在実行中のスレッドを一時的に一時停止し、同じ優先順位の残りの待機中のスレッドを実行する機会を与えます。待機中のスレッドがない場合、または待機中のすべてのスレッドの優先度が低い場合、同じスレッドはその実行を継続します。あなたのスレッドが優先されると仮定すると、開いているリソースは閉じられます。さもなければ、それらは開いた状態にとどまることができます。

wait()は「私のCPUタイムスライスで完了しました。誰かがnotify()を呼び出すまで別のタイムスライスを与えないでください。sleep()と同様に、OSはnotify()を呼び出すか、他のいくつかの起床シナリオが発生しない限り、あなたの仕事をスケジュールしようとしません。通知が呼び出され、開いているリソースが閉じられない限り、開いているリソースは開いたままになります。

+0

この回答を受け入れるには、助けてください。だから、スリープを呼び、通知して待つために、制御がスレッドに戻ったときにリソースを閉じてリソースをオープンするのがベストプラクティスですか? – user1936201

関連する問題