/*
 * $Id: GC.java,v 1.4 2005/10/13 16:17:37 rampil Exp $
 * Copyright (c) 2004 LOGICAL-PARADOX.ORG
 */
package org.logical_paradox.rss.oqs4r;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.logical_paradox.common.util.Cache;

/**
 * 有効期限切れのオブジェクトを破棄するガベージコレクタ
 * 
 * @author  satoshi akabane@logical-paradox.org
 * @version $Revision: 1.4 $
 */
public class GC extends Thread {
	/** ロガー */
	private static final Log logger = LogFactory.getLog(GC.class);
	private Cache queue;
	private int watchInterval;

	/**
	 * コンストラクタ
	 * @param queue 管理対象のキャッシュ
	 * @param m 監視間隔
	 */
	public GC(Cache q, int m) {
		queue = q;
		watchInterval = m;
		setDaemon(true);
	}
	/**
	 * スレッドメイン
	 */
	public void run() {
		try {
			while(true) {
				sleep(watchInterval);
				gc();
			}
		} catch(InterruptedException ie) {
			// GCの終了
		}
	}
	/**
	 * 期限切れが発生しているオブジェクトをキャッシュから除去する
	 */
	protected void gc() {
		synchronized(queue) {
			// TODO 未実装
		}
	}
	/**
	 * GCスレッドを停止する
	 */
	public void shutdown() {
		interrupt();
	}
}
