美文网首页
(5)Semaphore 方法介绍

(5)Semaphore 方法介绍

作者: 码出高效 | 来源:发表于2018-03-30 00:22 被阅读31次

    (1)availablePermits()返回Semaphore对象中当前可用的许可数,此方法通常用于调试,应为许可的数量有可能实时在改变,并不是固定的数量。

    (2)drainPermits()可获取并返回立即可用的所有许可数,并将可用许可置位0

    (3)方法getQueueLength()的作用是取得等待许可的线程数

    (4)方法hasQueuedThreads()的作用是判断有没有线程在等待这个许可

    这两个方法通常都是在判断当前有没有等待许可的线程信息时使用。

    可以看到线程的个数递减的状态。

    公平与非公平信号量的测试:

    有些时候,获得许可的顺序与线程启动的顺序有关,这时信号量就要分为公平与非公平的。所谓的公平信号量是获得的锁的顺序与线程启动的顺序有关,但不代表100%地获得信号量,仅仅是在概率上能得到保证,而非公平的信号量就是无关的了。

    无序打印:

    将isFair=true;

    有序打印:

    5)方法tryAcquire的使用

    该方法的作用是尝试地获取1个许可,如果获取不到许可返回false,此方法通常与if语句结合使用,其具有无阻塞的特点,无 阻塞的特点可以使用现场不至于在同步处一直持续等待的状态,如果if语句判断不成立则会继续走else语句,程序继续向下走。


    相关文章

      网友评论

          本文标题:(5)Semaphore 方法介绍

          本文链接:https://www.haomeiwen.com/subject/nfqbcftx.html