Java のスレッド終了: Thread.stop() はなぜ廃止されるのですか?Java の
Thread.stop() は、固有の理由により廃止されます。安全性の問題。 Thread.stop() を使用してスレッドを停止すると、そのスレッドが保持しているロック (モニター) が突然解除され、オブジェクトが不整合な状態のままになり、予期しない動作が発生する可能性があります。この動作は予測不可能であり、検出が難しい場合があります。
モニターについて
モニターは、共有リソースへのスレッドセーフなアクセスを保証する同期オブジェクトです。スレッドがモニターのロックを取得すると、ロックを解放するまでリソースに排他的にアクセスできます。 Thread.stop() が呼び出されると、スレッドはすべてのロックを即座に解放します。これにより、他のスレッドも同じリソースにアクセスしている場合、データの破損や競合状態が発生する可能性があります。
Thread.stop( の代替) )
Thread.stop() は強く推奨されないため、Java はスレッドを正常に停止するための代替メカニズムを提供します。 1 つのアプローチは、ブール値のフラグまたは変数を使用して、スレッドに終了するよう通知することです。スレッドはこのフラグを定期的にチェックし、それが true になったときに終了できます。
もう 1 つのアプローチは、協調的な中断メカニズムを実装することです。 Java のスレッドは、interrupt() メソッドを呼び出すことで中断できます。スレッドが中断されると、その実行を停止したり、特定の方法で中断に応答したりするなど、このイベントを適切に処理できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3