JavaVMを起動すると、いくつかのスレッドが起動します。
メインスレッドです。
プログラムは通常、このスレッド上で動いています。
参照オブジェクトを扱うスレッドです。
オブジェクトのファイナライザを扱うスレッドです。
なお、ファイナライザ機能は可能な限り使用しない事をお薦めします。
ファイナライザは「オブジェクトが消滅する」ときに初めて呼び出されるもので
そのタイミングは予測不可能です。
ガーベッジコレクトの対象にならなければ、プログラムが終了するときまで
そのタイミングは引き伸ばされる可能性もあります。
そして、ファイナライザ処理を行うオブジェクトは
通常よりも長い間ガーベッジコレクトの対象にならないという現象も報告されています。
以上より、オブジェクトの後処理はファイナライザに頼らず
明示的なメソッド呼出によって行うのが良い方法と言えるのです。
シグナルを扱うスレッドです。
