/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.core.cachepool.extend.thread;
import org.apache.log4j.Logger;
import com.jinhe.tss.core.cachepool.CacheManager;
import com.jinhe.tss.core.cachepool.Cacheable;
import com.jinhe.tss.core.cachepool.IArithmetic;
import com.jinhe.tss.core.cachepool.TimeWrapper;
import com.jinhe.tss.core.cachepool.strategy.CacheConstants;
/**
* <p> ThreadPoolArithmetic.java </p>
*
* 线程池算法类。
* 创建、验证、销毁工作线程。
*
* @author Jon.King 2007-1-9
*/
public class ThreadPoolArithmetic implements IArithmetic{
protected Logger log = Logger.getLogger(this.getClass());
public Cacheable create(Long cyclelife){
IThreadPool tPool = (IThreadPool) CacheManager.getInstance().getCachePool(CacheConstants.THREAD_POOL);
Thread thread = tPool.createWorkThread();
thread.start();
return new TimeWrapper(thread.getName(), thread, cyclelife);
}
public boolean isValid(Cacheable o){
return ((Thread)o.getValue()).isAlive();
}
public void destroy(Cacheable o){
Thread poolWorker = (Thread)o.getValue();
try {
poolWorker.join(50); //等待线程死亡
} catch (InterruptedException e) {
log.error("停止initer线程时被中断", e);
}
poolWorker = null;
}
}