假设我们通过代码ExecutorService executorService = Executors.newFixedThreadPool(100)
创建100个线程,假设不幸的是所有100个线程都挂起,在这种情况下,可以使用来自线程池的空闲线程,并且不能为新请求提供服务。那么如何应对这种情况呢?强制中止挂起线程并让它返回线程池?如果是如何强制中止线程?或者如果有超时可以使用,超时后挂起线程会自动中止,并返回线程池?
答案 0 :(得分:0)
一个线程只有一个生命,这就是Executor Service线程永不消亡的原因。超时不是这里的选择。您应该在执行中超时。只有当它因使用某些外部服务(如数据库或http服务)而挂起时,才能执行此操作。除此之外,您还要确保在本地代码中不会发生线程锁定。使用分析器来解决这些问题。