public class OptimizeDaemon implements Runnable
{
/**
* Log object
*/
private static Log log = LogFactory.getLog(
OptimizeDaemon.class); /**
* 索引类.
*/
private Indexer indexer; /**
* @param pIndexer 索引类.
*/
public OptimizeDaemon(
final Indexer pIndexer)
{
this.indexer = pIndexer;
} /**
* 终止线程标志
*/
private boolean flag = true; /**
* 终止线程
*
*/
public void stop()
{
flag = false;
} /**
* 每个24小时优化一次索引
*/
public void run()
{
while (flag)
{
try
{
indexer.optimize();
Thread.sleep(5 * 60 * 1000);
} catch (Exception e)
{
if (log.isErrorEnabled())
{
log.error("优化索引时发生异常", e);
}
}
}
}
}调用这个类的stop()方法,怎么停止不了线程。
{
/**
* Log object
*/
private static Log log = LogFactory.getLog(
OptimizeDaemon.class); /**
* 索引类.
*/
private Indexer indexer; /**
* @param pIndexer 索引类.
*/
public OptimizeDaemon(
final Indexer pIndexer)
{
this.indexer = pIndexer;
} /**
* 终止线程标志
*/
private boolean flag = true; /**
* 终止线程
*
*/
public void stop()
{
flag = false;
} /**
* 每个24小时优化一次索引
*/
public void run()
{
while (flag)
{
try
{
indexer.optimize();
Thread.sleep(5 * 60 * 1000);
} catch (Exception e)
{
if (log.isErrorEnabled())
{
log.error("优化索引时发生异常", e);
}
}
}
}
}调用这个类的stop()方法,怎么停止不了线程。
是阻塞的,线程已经被阻塞了,while (flag) 在24小时内没有执行,怎么可以呢!
可以在线程中比较时间差来实现!