Java中挂线程的处理

Java中挂线程的处理,java,multithreading,Java,Multithreading,如果线程在Java中的任务执行过程中挂起,有人能指导我如何处理它吗 假设我们有10个由父线程创建的线程,并且第一个子线程在执行时挂起。在这个场景中,我希望9个线程的其余部分正常执行。 那么,我们可以通过多少种不同的方式实现这一目标呢在爪哇 这是在一次采访中问我的。最好分析出线程为何处于挂起状态并修复它。去挂州一定有原因。 否则,您可以检查线程是否在X毫秒内完成,如果未完成,则终止它 最好通过分析找出线程处于挂起状态的原因并修复它。去挂州一定有原因。 否则,您可以检查线程是否在X毫秒内完成,如果未

如果线程在Java中的任务执行过程中挂起,有人能指导我如何处理它吗

假设我们有10个由父线程创建的线程,并且第一个子线程在执行时挂起。在这个场景中,我希望9个线程的其余部分正常执行。 那么,我们可以通过多少种不同的方式实现这一目标呢在爪哇


这是在一次采访中问我的。

最好分析出线程为何处于挂起状态并修复它。去挂州一定有原因。
否则,您可以检查线程是否在X毫秒内完成,如果未完成,则终止它

最好通过分析找出线程处于挂起状态的原因并修复它。去挂州一定有原因。
否则,您可以检查线程是否在X毫秒内完成,如果未完成,则终止它

对于初学者,您应该调查并尝试找到线程挂起的核心原因

在实现方面,我会选择侦听器/观察者模式,其中所有子线程都可以在父线程的工作完成后通知父线程。为此,父线程将引用其所有子线程。一旦所有的子节点都通知了父节点,它就可以安全地取消分配所有资源并终止自身

在子线程从不响应父线程的情况下,您可以定义一个
max timeout
,在该值之上您将线程视为挂起,然后从父侦听器终止它


希望这有帮助

对于初学者,您应该调查并尝试找到线程挂起的核心原因

在实现方面,我会选择侦听器/观察者模式,其中所有子线程都可以在父线程的工作完成后通知父线程。为此,父线程将引用其所有子线程。一旦所有的子节点都通知了父节点,它就可以安全地取消分配所有资源并终止自身

在子线程从不响应父线程的情况下,您可以定义一个
max timeout
,在该值之上您将线程视为挂起,然后从父侦听器终止它


希望这有帮助

我知道我们必须解决问题的根本原因,但从面试官提问的角度来看,他更热衷于理解我们如何继续执行剩下的任务。假设存在多个线程,但由于一个线程,其他线程的执行不应受到影响。那么我们如何才能做到这一点呢???@SwapnilTyagi,如果有人在采访中问我这个问题,我会坚持认为浪费时间试图让程序对挂起的线程具有弹性是不合适的。只有两个合理的选择。(1) 找出线程挂起的原因,然后修复代码,使其不会发生,或者(2)重新设计系统,使其作为多个进程运行,这样,如果进程挂起,它可以安全地终止,并可以执行某种有意义的恢复。我理解我们必须修复根本原因,但从面试官提问的角度来看,他更热衷于理解我们如何继续执行剩下的任务。假设存在多个线程,但由于一个线程,其他线程的执行不应受到影响。那么我们如何才能做到这一点呢???@SwapnilTyagi,如果有人在采访中问我这个问题,我会坚持认为浪费时间试图让程序对挂起的线程具有弹性是不合适的。只有两个合理的选择。(1) 找出线程挂起的原因,然后修复代码,使其不会发生,或者(2)重新设计系统,使其作为多个进程运行,以便在进程挂起时,可以安全地终止该进程,并可以执行某种有意义的恢复。您能分享一些示例代码吗?您能分享一些示例代码吗,你在哪里展示这个想法?