资源简介
进程同步的模拟与实现
阅览室读书问题:假定一个阅览室最多可容纳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做的图书馆管理系统
相关资源
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论