zoukankan      html  css  js  c++  java
  • Java多线程之线程阻塞原语LockSupport的使用

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6558597.html 

        看名字就知道了,LockSupport——提供对加锁机制的支持。

        它是提供线程阻塞的原语,很多同步工具对线程的阻塞都是靠它来实现的。

        一:使用

        LockSupport提供了一系列的静态方法对线程进行禁用与启用操作,我们之间通过类名即可调用。

        阻塞线程:在需要阻塞线程的地方,通过 LockSupport.park()/LockSupport.park(blocker) 阻塞当前线程;

        解除线程阻塞:通过 LockSupport.unpark(thread) 解除参数thread的阻塞。

        二:新特性

        阻塞线程时的许可:park()方法可以传进去一个 Object 类型的参数 block,这是一个许可证,相当于 值为1的semaphore。当前线程通过park()方法获取这个许可进行阻塞后,其他线程就不能再获取了,只能通过unpark(thread)解除这个线程阻塞并释放这个许可。

        许可的作用:因为park() 和 unpark()有许可的存在;调用 park() 的线程和另一个试图将其 unpark() 的线程之间的竞争将保持活性,使得不会遇到“Thread.suspend 和 Thread.resume所可能引发的死锁”问题。

  • 相关阅读:
    css+js实现的一个导航栏
    各类插件的网页库
    vue构建项目全过程
    手把手教你使用Git
    创建git库
    VUE.JS的安装
    reset.css 初始化
    分布式事务方案
    线程池的参数
    每秒上千订单场景下,如何对分布式锁的并发能力进行优化
  • 原文地址:https://www.cnblogs.com/ygj0930/p/6558597.html
Copyright © 2011-2022 走看看