首先,一个非常愚蠢的问题,我只是想知道等待中的“停车”是什么意思?是线程正在等待驻留,还是线程刚刚处于驻留状态,因此处于等待状态?当发生停车时,会占用多少CPU /内存资源?存放线程的目的是什么?
其次,通过查看Java线程API中的 park方法
除非有许可,否则出于线程调度目的禁用当前线程。 如果许可证可用,则将其消耗掉,并立即返回呼叫;否则,呼叫将立即返回。否则,当前线程将出于线程调度目的而被禁用,并处于休眠状态,直到发生三件事之一.....
除非有许可,否则出于线程调度目的禁用当前线程。
如果许可证可用,则将其消耗掉,并立即返回呼叫;否则,呼叫将立即返回。否则,当前线程将出于线程调度目的而被禁用,并处于休眠状态,直到发生三件事之一.....
英语不是我的主要语言,因此我很难理解,我打算将“许可”作为一种“停车线许可”,因此出现以下问题:
谢谢
许可是指继续执行的许可。停车意味着中止执行直到获得许可为止。
与Semaphore的许可不同,的许可LockSupport与线程相关联(即,将许可授予特定的线程)并且不会累积(即,每个线程只能有一个许可,当线程消耗许可时,它就会消失)。
Semaphore
LockSupport
您可以通过调用授予线程许可unpark()。线程可以通过调用挂起其执行,直到允许使用许可(或线程被中断或超时到期等)为止park()。当允许使用许可时,驻留的线程将使用它并退出park()方法。
unpark()
park()