信号量Semaphore的概念及其使用

概念

        在操作系统中也经常出现信号量这一概念

        Semaphore是并发编程中一个重要的概念/组件

        准确来说,Semaphore是一个计数器(变量),描述了”可用资源的个数“,描述的是,当前线程是否有”临界资源可用

        临界资源表示,多个线程/进程等并发执行的实体可以公共使用到的资源(多个线程修改同一个变量,这个变量可以认为是临界资源)

代码实现

        

package 信号量semaphore;

import java.util.concurrent.Semaphore;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: wuyulin
 * Date: 2023-08-04
 * Time: 16:32
 */

//Semaphore是并发编程中一个重要的概念/组件
//准确来说Semaphore是一个计数器,描述了可用资源的个数
//描述了当前这个线程是否有临界资源可以使用
//临界资源,多个线程/进程等并发执行的实体可以公共使用到的资源(多个线程可以修改同一个变量,这个变量就可以认为是临界资源)
public class Demo1 {
    public static void main(String[] args) throws InterruptedException {
        Semaphore semaphore=new Semaphore(4);   //参数表示初始可用资源的个数
        semaphore.acquire();
        System.out.println("获取资源");
        semaphore.acquire();
        System.out.println("获取资源");
        semaphore.acquire();
        System.out.println("获取资源");
        semaphore.acquire();
        System.out.println("获取资源");
        semaphore.release();
        System.out.println("释放资源");
        semaphore.acquire();
        System.out.println("获取资源");
        //一个就4个可用资源,在获取完了以后,再次进行获取要进入阻塞等待,等待资源被释放后才能获取
        semaphore.acquire();
        System.out.println("获取资源");

    }
}

        1.Semaphore的使用并不困难,实例化Semaphore对象中写入的参数表示初始可用资源的个数

        2.调用acquire方法来获取资源,此时Semaphore中用于计数的属性就减一

        3.调用release方法释放资源,此时Semaphore中用于计数的属性就加一

        4.当Semaphore中用于计数的属性为0表示没有资源可以利用,此时再调用acquire方法来获取资源,就会进入阻塞等待,直到有资源了以后再去获取资源继续向下执行

你可能感兴趣的:(python,开发语言)