Java 当螺纹死亡时进行操作
我使用的是ThreadPoolExecutor,需要将workerID与每个线程关联,因此当一个线程死亡时,应该删除该ID,当创建新线程时,应该使用该ID。但我如何确保线程死亡。做点什么 不能依靠运行方法完成,因为keepAliveTime为15分钟 有没有办法确保这一点?Java 当螺纹死亡时进行操作,java,multithreading,Java,Multithreading,我使用的是ThreadPoolExecutor,需要将workerID与每个线程关联,因此当一个线程死亡时,应该删除该ID,当创建新线程时,应该使用该ID。但我如何确保线程死亡。做点什么 不能依靠运行方法完成,因为keepAliveTime为15分钟 有没有办法确保这一点? ThreadFactorynewThread方法如下: public Thread newThread(Runnable r) { Thread thread = new Thread(group, r, (new
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;
}
getnextworkedid
返回newxtWorkerID。用一个实现扩展ThreadPoolExecutor
如何,该实现保持一个映射,值为workerid?在这个方法中,您可以重写afterExecute(Runnable,Throwable)
并从Map
中删除workerID。这个过程不应该由池本身来处理吗?我想不是,或者我错过了什么?您是否考虑过扩展线程
类来通知相关方?我认为这可以作为一个例子: