java LockSupport park() unpark() 的用法&和wait() notify()的区别

java  LockSupport  park() unpark() 的用法

ockSupport类是Java并发包中的一个工具类,提供了一些基本的线程阻塞和唤醒操作。其中,unpark(Thread thread)方法是用来唤醒指定线程的关键方法。下面详细解释一下unpark方法:

unpark方法的作用:

  • 唤醒线程:unpark方法可以解除指定线程的阻塞状态,使其有机会继续执行。如果线程在调用park()之前被unpark了,线程不会被阻塞(即所谓的"许可"机制)。

使用场景:

  • 线程同步:可以用来细粒度地控制线程的执行顺序或唤醒特定的线程。

  • 条件变量:在实现自定义的条件变量或锁时,可以使用unpark来唤醒等待的线程。

  • 线程池:用于唤醒处于等待状态的工作者线程。

unpark方法的特点:

  1. 非阻塞:调用unpark不会阻塞调用者,操作是即时的。

  2. 许可机制:

    • unpark给指定的线程发放一个"许可",如果线程在调用park时有"许可",它不会被阻塞。

    • 如果线程没有被阻塞,"许可"会保留,直到线程调用park方法。在这种情况下,park会立即返回,而不会阻塞线程。

  3. 可重入性:

    • 多次调用unpark对一个线程是安全的,只有第一次调用会生效,后续的unpark调用不会产生额外的影响,直到线程再次调用park消耗掉所有许可。

  4. 线程安全:

    • unpark操作是线程安全的,不需要同步。

impor

你可能感兴趣的:(java LockSupport park() unpark() 的用法&和wait() notify()的区别)