Java驻车线程
在java中,驻留线程和等待线程之间有什么区别?我有一个jboss内核转储,分析它时会显示许多已停止的线程。查看Java驻车线程,java,multithreading,Java,Multithreading,在java中,驻留线程和等待线程之间有什么区别?我有一个jboss内核转储,分析它时会显示许多已停止的线程。查看park()方法: 出于线程调度目的禁用当前线程,除非 有许可证。如果许可证可用,则它将被消耗 并且呼叫立即返回;否则,当前线程将变为 出于线程调度目的而禁用,并处于休眠状态,直到 发生了三件事: 其他一些线程以当前线程作为 目标;或者其他线程中断当前线程;或者 虚假地(即,没有理由地)呼叫返回。这种方法不适用 报告导致方法返回的原因。来电者应 重新检查导致螺纹停在第一个位置的情况 地
park()
方法:
出于线程调度目的禁用当前线程,除非
有许可证。如果许可证可用,则它将被消耗
并且呼叫立即返回;否则,当前线程将变为
出于线程调度目的而禁用,并处于休眠状态,直到
发生了三件事:
其他一些线程以当前线程作为
目标;或者其他线程中断当前线程;或者
虚假地(即,没有理由地)呼叫返回。这种方法不适用
报告导致方法返回的原因。来电者应
重新检查导致螺纹停在第一个位置的情况
地点。呼叫者还可以例如确定中断状态
返回时的线程
因此,一个停驻的线程是使用
LockSupport.park()
LockSupport阻塞的线程-类使用基本线程阻塞原语创建锁和其他同步类
方法park()出于线程调度目的禁用当前线程,除非许可证可用
unpark(线程线程)使给定线程的许可证可用(如果该许可证不可用)
像这样使用它:最后{ 锁支持。未解析(线程);
}在Java中,通过调用
LockSupport.park()
方法而停放的线程是一个等待线程(在thread.state.waiting
中)
有关详细信息,请参阅Java文档
有3种方法可以使线程处于等待状态:
例如,在对象上调用Object.wait()的线程正在等待另一个线程调用该对象上的Object.notify()或Object.notifyAll()。调用thread.join()的线程正在等待指定的线程终止。停止意味着在许可证可用之前暂停执行许可表示继续执行的许可。 线程可以暂停其执行,直到许可证可用。当许可证可用时,停止的线程将使用它并退出一个park()方法停止()和等待()都将导致线程被禁用。使禁用的线程再次处于活动状态取决于其禁用方式 通过调用禁用的线程将保持禁用状态,直到:
- 其他一些线程调用,或者
- 其他一些线程调用,或者
- 呼叫错误地(即无原因地)返回
- 其他线程调用或,或
- 禁用线程上的其他一些线程调用