当使用executor . newfixedthreadpool(100)时,如何处理挂起线程



假设我们通过代码ExecutorService executorService = Executors.newFixedThreadPool(100)创建了100个线程,假设不幸的是,所有的100个线程都挂起了,在这种情况下,线程池中没有空闲的线程可以使用,并且没有新的请求可以被服务。那么如何应对这种情况呢?强制中止挂起线程并让它返回线程池?如果是,如何强制中止线程?或者如果可以使用超时,那么在超时之后挂起的线程将自动中止,并返回到线程池?

一个线程只有一次生命期,这就是为什么Executor Service线程永远不会死亡。超时在这里不是一个选项。你应该在你所做的实现中有一个超时。只有当它因为使用一些外部服务(如数据库或http服务)而挂起时才能这样做。除此之外,您还必须确保线程锁不会在本地代码中发生。使用分析器找出这些问题

最新更新