概念
在操作系统中也经常出现信号量这一概念
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中用于计数的属性就加一文章来源:https://www.toymoban.com/news/detail-624195.html
4.当Semaphore中用于计数的属性为0表示没有资源可以利用,此时再调用acquire方法来获取资源,就会进入阻塞等待,直到有资源了以后再去获取资源继续向下执行文章来源地址https://www.toymoban.com/news/detail-624195.html
到了这里,关于信号量Semaphore的概念及其使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!