package java.lang;

/**
 * ファイナライザ処理を行う
 * （パッケージプライベートクラス）
 */
final class VMFinalizeThread extends Thread {
	/**
	 * Singleton
	 */
	private static VMFinalizeThread instance;
	
	public synchronized static VMFinalizeThread getInstance() {
		if (instance == null) {
			instance = new VMFinalizeThread();
		}
		return instance;
	}
	
	private VMFinalizeThread() {
		super(null,					// VMThread (start()呼び出し時に生成される）
		      "finalizer",			// スレッド名
		      Thread.MAX_PRIORITY,	// プライオリティ
		      true);				// デーモンスレッド
		this.group = ThreadGroup.root;
	}
	
	/**
	 * 対象オブジェクトの finalize() メソッドをすべて呼び出す
	 */
	public native void run();
}
