线程死亡时进行操作

时间:2014-04-23 08:04:55

标签: java multithreading

我正在使用ThreadPoolExecutor,并且需要将workerID与每个线程相关联,因此当线程死亡时,应该删除该ID,并且在创建新线程时应该使用该ID。但是我如何确保线程死亡。并执行某些事情。

不能依赖run方法完成,因为keepAliveTime是15分钟。

有没有办法确保这一点?

ThreadFactory newThread方法是这样的:

public Thread newThread(Runnable r)
{
    Thread thread = new Thread(group, r, (new StringBuilder()).append(namePrefix).append(threadNumber.getAndIncrement()).toString(), 0L);
    if(thread.isDaemon())
    {
        thread.setDaemon(false);
    }

    thread.setName((new StringBuilder()).append("Thread name : ").append(name).append(" WorkerId : ").append(getNextWorkerID());
    return thread;
}

getNextWorkerID返回newxtWorkerID。

1 个答案:

答案 0 :(得分:1)

如何使用保持ThreadPoolExecutor且值为workerID的实现来扩展Map<Runnable, String>?您可以覆盖afterExecute(Runnable, Throwable)并从此方法中的Map中删除workerID。