通知によるスレッドの完了の確認
マルチスレッド アプリケーションでは、適切な実行を保証するためにスレッドの完了ステータスを監視することが重要です。この記事では、スレッドの実行終了時に通知を取得するためのさまざまな方法について説明します。
スレッド ステータスの追跡
1 つの方法は、Thread.join() 指定されたすべてのスレッドが完了するまでメインスレッドをブロックします。効果的ではありますが、非同期シナリオでは必ずしも望ましいとは限りません。
別のオプションはThread.isAlive() ですが、スレッド完了のための継続的なポーリングは、オーバーヘッドと潜在的なパフォーマンスを引き起こすため、一般的に推奨されません。
カスタム通知メカニズム
型破りなアプローチには、キャッチされなかった例外ハンドラー の設定や、ロックとシンクロナイザーの使用が含まれます。ただし、これらのメソッドは複雑でエラーが発生しやすい可能性があります。
リスナーベースの通知
より構造化された解決策は、リスナー インターフェイスを作成し、各スレッドから通知することです。完成したら。これには、ThreadCompleteListener のようなインターフェイスと、Thread を拡張して完了時にリスナーに通知する NotifyingThread のようなクラスの作成が含まれます。
メイン クラスThreadCompleteListener を実装し、それ自体をリスナーとして各スレッドに追加して通知を受け取ることができます
実装例
以下は、リスナーベースのアプローチの実装例です。public interface ThreadCompleteListener { void notifyOfThreadComplete(final Thread thread); } public abstract class NotifyingThread extends Thread { // Listener management ... // Notify listeners ... @Override public final void run() { try { doRun(); } finally { notifyListeners(); } } public abstract void doRun(); }
での使用Main Class
NotifyingThread thread1 = new OneOfYourThreads(); thread1.addListener(this); // add ourselves as a listener thread1.start(); // Start the Thread
以上がマルチスレッド アプリケーションでスレッドが終了したときに効率的に通知を受け取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。