java semaphore是什么?semaphore什么意思?

KLQ 2020-06-24 14:24:58 java常见问答 7034

下面要给大家介绍的是semaphore,你对于semaphore有了解吗?java semaphore究竟是什么意思呢?一起通过下文来进行一下了解吧。

什么是semaphore?

java当中的semaphore是一种新的同步类,它是一个计数信号。

从概念上面来说的话,信号量维护了一个许可集合,假如是有必要的话,在许可可用之前,会阻塞每一个acquire(),之后,再获取该许可。

每一个release()添加一个许可,从可能释放一个正在阻塞的获取者,可是,不是用实际的许可对象,semaphore只对可用许可的号码进行计数,并且,采取相对应的行动。

信号量经常用在多线程的代码当中,比较典型的就是数据库连接池

对于java当中的semaphore你都了解了吧,可以仔细的看看上面的介绍哦。

semaphore只有三个操作,一个是初始化,另外一个是增加,第三个就是减少。

示例:

import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
public class StudySemaphore
{
    public static void main(String[] args)
    {
        ExecutorService executorService = Executors.newCachedThreadPool();
        //信号量,只允许 3个线程同时访问
        Semaphore semaphore = new Semaphore(3);
        for (int i = 0; i < 10; i++)
        {
            final long num = i;
            executorService.submit(new Runnable()
            {
                @Override
                public void run()
                {
                    try
                    {
                        //获取许可
                        semaphore.acquire();
                        //执行
                        System.out.println("Accessing: " + num);
                        Thread.sleep(new Random()
                            .nextInt(5000)); // 模拟随机执行时长
                        //释放
                        semaphore.release();
                        System.out.println("Release..." + num);
                    }
                    catch (InterruptedException e)
                    {
                        e.printStackTrace();
                    }
                }
            });
        }
        executorService.shutdown();
    }
}

对于semaphore的内容就给你介绍到这里啦,更多关于semaphore的常见问题,可以继续来奇Q工具网进行了解哦。

推荐阅读:

java继承的作用是什么?java类的继承性的主要作用

类加载器有几种?如何深入理解类加载器?

类的加载流程是怎么进行的?