Java的信号量Semaphore
来源:互联网 发布:犀牛软件基础教程 编辑:程序博客网 时间:2024/04/29 12:55
Semaphore 表示信号量,在Linux的信号量的出现是为了解决共享资源竞争的问题。
其核心概念是:
当请求一个使用信号量来表示的资源时,进程需要先读取信号量的值来判断资源是否可用。大于0,资源可以请求,等于0,无资源可用,进程会进入睡眠状态直至资源可用。当进程不再使用一个信号量控制的共享资源时,信号量的值+1,表示释放资源,其它进程就可以使用。
举例:
public class SemaphoreTest { public static void main(String[] args) { // 使用信号量来表示资源。比如现在有3台电脑,有10个学生用。 int N = 10; // 学生数 int C = 3; // 电脑数 Semaphore semaphore = new Semaphore(C); for(int i = 0; i < N; i++) { new Student(i, semaphore).start(); } }}
public class Student extends Thread{ private Semaphore semaphore; private int i; public Student(int i, Semaphore semaphore) { this.semaphore = semaphore; this.i = i; } @Override public void run() { try { semaphore.acquire(); System.out.println("学生" + i + "正在使用电脑.."); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("学生" + i + "已经使用完电脑.."); semaphore.release(); } catch (InterruptedException e) { e.printStackTrace(); } }}
运行结果:
学生0正在使用电脑..学生1正在使用电脑..学生2正在使用电脑..学生0已经使用完电脑..学生2已经使用完电脑..学生1已经使用完电脑..学生4正在使用电脑..学生3正在使用电脑..学生5正在使用电脑..学生4已经使用完电脑..学生5已经使用完电脑..学生3已经使用完电脑..学生7正在使用电脑..学生6正在使用电脑..学生8正在使用电脑..学生7已经使用完电脑..学生6已经使用完电脑..学生9正在使用电脑..学生8已经使用完电脑..学生9已经使用完电脑..
阅读全文
0 0
- Java的信号量Semaphore
- java多线程的信号量Semaphore
- 理解JAVA的Semaphore信号量
- java 信号量Semaphore的使用
- Semaphore信号量的使用java
- java Semaphore信号量的原理和示例
- Java中信号量Semaphore的简单使用
- Java中Semaphore(信号量)的使用
- Java中Semaphore(信号量)的使用
- Java中Semaphore(信号量)的使用
- java信号量Semaphore
- Java 信号量 Semaphore 介绍
- Java 信号量 Semaphore 介绍
- Java 信号量 Semaphore 介绍
- Java信号量Semaphore 介绍
- Java 信号量 Semaphore 介绍
- Java 信号量 Semaphore 介绍
- Java信号量Semaphore 介绍
- 【Java】【教程】Java 教程
- day22网络编程 UDP、TCP协议
- 17_张孝祥_多线程_同步工具Exchanger
- springboot之集成mybatis mongo shiro druid redis jsp
- 76. Minimum Window Substring
- Java的信号量Semaphore
- 写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- linux环境下用GStreamer实现rtsp取流播放
- 项目中css样式不生效
- linux_zip相关压缩解压命令
- bzoj1041 [HAOI2008]圆上的整点 gcd
- android自定义view_ClearEditText带清空按钮的输入框
- 【Codeforces232E】Quick Tortoise
- LaTeX新人教程