资源简介
进程同步的模拟与实现
阅览室读书问题:假定一个阅览室最多可容纳100
人,读者进入和离开阅览室时都必须在阅览室门
口的一个登记表上进行登记,而且每次只允许一
人进行登记操作。请用信号量实现上述进程的同
步问题。
代码片段和文件信息
package hair;
import java.awt.Color;
import java.awt.Container;
import java.util.Random;
import java.util.concurrent.Semaphore;
import javax.swing.*;
public class ReadingRoom extends Jframe{
/**
*
*/
private static final long serialVersionUID = 1L;
static int readers = 0;//读者人数
static int seats = 5;//阅览室的空座位数,初值为5
static Semaphore mutex = new Semaphore(1);//互斥信号量,初值为1
boolean regist=true;
static Sofa j1;
static Sofa j2;
static Sofa j3 ;
static Sofa j4 ;
static Sofa j5;
static Sofa j6;
static Sofa j7;
static Sofa j8 ;
static Sofa j9 ;
static Sofa j10;
static JButton j ;
static Sofa[] sofas;
public ReadingRoom(){
Container c = getContentPane();
setBounds(550 240 600 600);
setLayout(null);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setVisible(true);
settitle(“图书阅览室“);
j1 = new Sofa(“空闲“);
j2 = new Sofa(“空闲“);
j3 = new Sofa(“空闲“);
j4 = new Sofa(“空闲“);
j5 = new Sofa(“空闲“);
j6 = new Sofa(“空闲“);
j7 = new Sofa(“空闲“);
j8 = new Sofa(“空闲“);
j9 = new Sofa(“空闲“);
j10 = new Sofa(“空闲“);
j = new Sofa(“登记处“);
j1.setBounds(20 300 80 60);
j2.setBounds(110 300 80 60);
j3.setBounds(200 300 80 60);
j4.setBounds(290 300 80 60);
j5.setBounds(380 300 80 60);
j6.setBounds(20 400 80 60);
j7.setBounds(110 400 80 60);
j8.setBounds(200 400 80 60);
j9.setBounds(290 400 80 60);
j10.setBounds(380 400 80 60);
j.setBounds(160 50 150 100);
c.add(j1);
c.add(j2);
c.add(j3);
c.add(j4);
c.add(j5);
c.add(j6);
c.add(j7);
c.add(j8);
c.add(j9);
c.add(j10);
c.add(j);
sofas = new Sofa[]{j1j2j3j4j5j6j7j8j9j10};
}
public void open(){
while(true){
try {
Thread.sleep((long) (Math.random()*5000));
} catch (InterruptedException e) {
e.printStackTrace();
}
new Thread(new Reader(createName())).start();
}
}
public static void main(String args[]) throws InterruptedException {
ReadingRoom rr = new ReadingRoom();
rr.open();
}
/*
* 判断阅览室座位是否为满
*/
public synchronized static boolean isFull() {
if (readers == seats) {
return true;
}
return false;
}
/*
* 读者进入阅览室
- 上一篇:方立勋30天Javaweb视频
- 下一篇:用JSP做的图书馆管理系统
相关资源
- 方立勋30天Javaweb视频
- 运用jsp实现的购物车模块
- JAVa程序拼图源代码
- JAVA课程设计--计算器(含文档等
- 2017达内Java视频全套,ts高清文件
- Hill加密算法Java实现,带图形化界面
- ZXing-core-3.3.0.jar
- java龟兔赛跑小程序
- java实现网络竞拍系统有界面
- JTable 动态添加数据
- 图书管理系统JavaC/S架构
- java书籍Java从入门到精通(第三版)
- 达梦数据库的连接配置
- java风扇小程序
- Java版查找并打印有向图中的所有环路
- 详细的java学习路线_规划_步骤
- 旅行代理管理系统软件设计
- kafka java maven
- 手机QQ2012java通用版
- Java编写的MVC模式小系统
- java制作的输入法
- Eclipse IDE for Java EE Developers
- Java网络白板197032
- JAVA计算器小程序多进制计算、转换
- Sun_Java程序员认证考试题库
- MAVEN RSA签名生成验签
- Java编的生日祝福软件源代码
- java+SQL人事管理系统
- java多边形填充扫描线种子算法
- MQTT JAVA jar包 wmqtt.jar
评论
共有 条评论