スレッドが動作を完了した後、スレッド参照を明示的にnullに設定する必要がありますか、それとも不要ですか?nullとして設定したい場合は、コードのどこでこれを行う必要がありますか?
スレッドが生きているかthread.isalive
フラグを使用していないかを確認し、生きていない場合はnullに設定する必要がありますか?
スレッドが動作を完了した後、スレッド参照を明示的にnullに設定する必要がありますか、それとも不要ですか?nullとして設定したい場合は、コードのどこでこれを行う必要がありますか?
スレッドが生きているかthread.isalive
フラグを使用していないかを確認し、生きていない場合はnullに設定する必要がありますか?
スレッドは他のオブジェクトと同じように扱う必要があります。
参照は、必要な場合にのみ保持してください(たとえば、Join()
)。
スレッドの長寿命の参照がある場合(つまり、静的フィールドにある場合)、null
不要になったときに設定する必要があります。しかし、そのような変数を持っていない方がはるかに良いです。
スレッドが動作を完了した後、スレッド参照を明示的にnullに設定する必要がありますか、それとも不要ですか?
個人的には気にしない。とにかく、オブジェクト参照をnullに明示的に設定することが本当に重要な場合がいくつかあります。タイプに関係なく、これらのケースは次のとおりです。
それらは私が考えることができたものです。おそらくもっとありますが、おそらく多くはありません。ここでの一般的な分母は、変数が大量のメモリを消費するオブジェクトを参照することです。管理対象オブジェクト自体は多くのメモリを消費しないため、型の変数をnullに設定すると、使用方法に関係なく、多くのことを達成Thread
できるとは想像できません。Thread
ほとんどのリソースは、スレッドの開始時に割り当てられ、スレッドの終了時に割り当てが解除されます。
スレッドが生きているかどうかを確認し、thread.isaliveフラグを使用していない場合は、nullに設定する必要があります。
Thread.Join
私はスレッドのテストと完了を待つために使用することを好みます。実際、私はこれまでに有用なものに使用したことはありません。Thread.IsAlive
1 GCは実際には、参照が使用されなくなったことを検出できる場合、メソッドが終了する前にローカルオブジェクト参照を破棄するのに十分スマートです。