您现在的位置是:首页 > 文章详情

深入学习Lock锁(2)——LockSupport工具类

日期:2018-09-12点击:518

在同步组件中,当需要阻塞或唤醒一个线程的时候,都会使用LockSupport工具类来完成相应 工作。LockSupport定义了一组的公共静态方法,这些方法提供了最基本的线程阻塞和唤醒功能,而LockSupport也成为构建同步组件的基础工具。

    LockSupport定义了一组以park开头的方法用来阻塞当前线程,以及unpark(Thread thread) 方法来唤醒一个被阻塞的线程。

  1. public static void park():阻塞当前线程,如果调用unpark(Thread thread) 方法解除阻塞或者中断线程该方法才能返回。
  2. public static void parkNanos( long nanos):在park()方法的基础上增加了超时返回条件。
  3. public static void parkUntil(long deadline):阻塞当前线程,直到从1970年到deadline毫秒数的某一时刻
  4. public static void unpark(Thread thread):唤醒处于阻塞状态的线程。

    在Java 6中,LockSupport增加了park(Object blocker)、parkNanos(Object blocker,long nanos) 和parkUntil(Object blocker,long deadline)3个方法,用于实现阻塞当前线程的功能,其中参数 blocker是用来标识当前线程在等待的对象(以下称为阻塞对象),该对象主要用于问题排查和系统监控。因为当线程阻塞(使用synchronized关键字)在一个对象上时,通过线程dump能够 查看到该线程的阻塞对象,方便问题定位,而Java 5推出的Lock等并发工具时却遗漏了这一 点,致使在线程dump时无法提供阻塞对象的信息。因此,在Java 6中,LockSupport新增了上述3 个含有阻塞对象的park方法,用以替代原有的park方法。

原文链接:https://yq.aliyun.com/articles/639609
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章