java 与操作系统进程同步问题(一)————互斥问题
最近学校开设了操作系统原理课程,老师要求用任意语言去模拟进程的同步和互斥问题。
在尝试的写了之后,发现这个问题非常有意思,故想记录在博客中,作为自己的学习轨迹。
个人还是比较喜欢用Java语言,所以采用了java来编写。今天记录的是多个进程访问互斥资源量的问题,互斥即是某一资源同一时刻,只允许一个进程访问,在离散数学中,对互斥定义如下
事件A和B的交集为空,A与B就是互斥事件,也叫互不相容事件。也可叙述为:不可能同时发生的事件。如A∩B为不可能事件(A∩B=Φ),那么称事件A与事件B互斥,其含义是:事件A与事件B在任何一次试验中不会同时发生(百度百科)。
如日常生活中的打印机,就是一个公共资源,同一时刻,只允许一个任务进行,其他任务排队等待。
采用记录型信号量来实现。
相应的wait(Semaphore s) (wait操作就是p操作,我们的课本里是这种叫法)的伪代码就是
wait(Semaphore *s){
s->value--; //value是资源个数
if(s->value < ){
block(s->list); //list是PCB(process_control_block)块
}
}
对应的signal(signal就是v操作)的伪代码就是:
signal(Semaphore *s){
s->value++;
if(s->value >= )
wakeup(s->list);
}
所以首先我们得实现一个信号量类,采用synchronized块来模拟wait和signal操作 ,具体synchronized的细节请自行百度或者查阅其他博客园的文章,我理解的也不是特别透彻。
public class Semaphore {
public Object lock = new Object(); //synchronized锁住的是对象
public int value; //资源个数 public Semaphore(int value) {
this.value = value;
}
}
在该类中我们实现wait和signal方法
public static void Wait(Semaphore semaphore,String className) { //classname用来判断是那个线程
synchronized (semaphore.lock) {
semaphore.value--;
if (semaphore.value < 0)
{
try {
System.out.println(className + "被阻塞");
semaphore.lock.wait(); } catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} } public static void Signal(Semaphore semaphore,String className){
synchronized (semaphore.lock) {
semaphore.value++;
if (semaphore.value <= 0) {
System.out.println(className + "资源量足够,唤醒一个");
semaphore.lock.notify();
}
} }
可以看到跟最开始的伪代码基本思想都是一样的。
到此,我们就已经完成了记录型信号量。
下面我们就用记录型信号量来完成互斥关系
首先给出用记录型信号量完成互斥关系的伪代码
operation()
{
while(1){
wait(mutex);
//进入临界区
signal(mutex);
//剩余区
}
}
临界区:就是进程中访问临界资源的代码
我们模拟多个人使用打印机来模拟进程互斥问题。
一般解决同步问题要先确定信号量,互斥信号量非常好确定,就是打印机,我们可以设初始打印机资源为1
首先完成一个Runnable的子类,它就是对打印机进行的操作,即为上述的operation
public class PrinterUser implements Runnable{
//打印机信号量
Semaphore printer;
//确认线程身份
String userName;
public PrinterUser(Semaphore printer,String userName) {
// TODO 自动生成的构造函数存根
this.printer = printer;
this.userName = userName;
}
@Override
public void run() {
// TODO 自动生成的方法存根
while(true){
Semaphore.Wait(printer, userName);
System.out.println("正在打印");
Semaphore.Signal(printer, userName);
System.out.println(userName+"打印完成");
}
} }
给出测试
public static void main(String[] args) {
Semaphore printer = new Semaphore(1);
// TODO Auto-generated method stub
Thread threada= new Thread(new PrinterUser(printer, "打印者1"));
Thread threadb= new Thread(new PrinterUser(printer, "打印者2")); threada.start();threadb.start();
}
测试结果
aaarticlea/png;base64,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" alt="" />
java 与操作系统进程同步问题(一)————互斥问题的更多相关文章
- java 与操作系统进程同步问题(二)————经典消费者生产者问题
http://www.cnblogs.com/zyp4614/p/6033757.html (java 与操作系统进程同步问题(一)----互斥问题) 今天写的是最经典的生产者消费者问题,最简单的版本 ...
- Java 并发专题 : Semaphore 实现 互斥 与 连接池
继续并发方面的知识.今天介绍Semaphore,同样在java.util.concurrent包下. 本来准备通过例子,从自己实现到最后使用并发工具实现,但是貌似效果并不是很好,有点太啰嗦的感觉,所有 ...
- Java 判断操作系统类型(适用于各种操作系统)
Java 判断操作系统类型(适用于各种操作系统) 最近一段时间写一个授权的程序,需要获取很多信息来保证程序不能随意复制使用,必须经过授权才可以. 为了限制用户使用的操作系统,必须有统一的方法来获取才可 ...
- Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF
1 概述 本文是利用Java实现操作系统中的四种动态内存分配方式 ,分别是: BF NF WF FF 分两部分,第一部分是介绍四种分配方式的概念以及例子,第二部分是代码实现以及讲解. 2 四种分配方式 ...
- Java和操作系统交互细节
结合 CPU 理解一行 Java 代码是怎么执行的 根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器.控制器.存储设备,以及输入输出设备,如下图所示. enter image des ...
- Java和操作系统交互(Java 代码是怎么执行)(转)
结合 CPU 理解一行 Java 代码是怎么执行的 根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器.控制器.存储设备,以及输入输出设备,如下图所示. 我们先来分析 CPU 的工作原 ...
- Java 和操作系统交互,你猜会发生什么?
作者:lonelysnow https://www.jianshu.com/p/7f6832d61880 结合 CPU 理解一行 Java 代码是怎么执行的 根据冯·诺依曼思想,计算机采用二进制作为数 ...
- Java 线程锁机制 -Synchronized Lock 互斥锁 读写锁
(1)synchronized 是互斥锁: (2)ReentrantLock 顾名思义 :可重入锁 (3)ReadWriteLock :读写锁 读写锁特点: a)多个读者可以同时进行读b)写者必须互斥 ...
- Java中线程同步锁和互斥锁有啥区别?看完你还是一脸懵逼?
首先不要钻概念牛角尖,这样没意义. 也许java语法层面包装成了sycnchronized或者明确的XXXLock,但是底层都是一样的.无非就是哪种写起来方便而已. 锁就是锁而已,避免多个线程对同一个 ...
随机推荐
- 一套常用的css初始化样式
@charset "UTF-8"; /*css 初始化 */ html, body, ul, li, ol, dl, dd, dt, p, h1, h2, h3, h4, h5, ...
- ElasticSearch集群安装配置
1. 环境说明 Cent OS 7 jdk-8u121-linux-x64.tar.gz elasticsearch-5.2.1.zip 2. 系统环境配置 新建进程用户 修改File Descrip ...
- appium执行iOS测试脚本并发问题
appium1.4.X+iOS9.X+xcode7.X: appium1.4.x+iOS9.x+xcode7.x,这一整套的配置做移动端自动化测试是测试人员常用的测试框架.关于,这一套测试框架的并发问 ...
- 回车键搜索 - Enter搜索
今天写了个 搜索 想来发表发表 <!DOCTYPE html><html lang="en"><head> <meta charset= ...
- SQL Server 中截取字符串常用的函数
SQL Server 中截取字符串常用的函数: 1.LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要 ...
- NSString 为什么要使用copy,而不是retain
NSString 为什么要使用copy,而不是retain1.首先如果使用retain,只是引用计数+1,并没有生成新的对象,所以效率好2.但是使用copy安全.因为NSString 为 NSMuta ...
- Ruby读excel写入mysql
安装mysql2 打开cmd: gem install mysql2 代码 require 'win32ole' require 'mysql2' class String def addslashe ...
- poj2594最小顶点覆盖+传递闭包
传递闭包最开始是在Floyd-Warshall算法里面出现的,当时这算法用的很少就被我忽视了.. 传递闭包是指如果i能到达k,并且k能到达j,那么i就能到达j Have you ever read a ...
- 程序员要拥抱变化,聊聊Android即将支持的Java 8
WeTest 导读 Java 9预计今年也会正式发布,Java 8这个最具变革性且变革性最适于GUI程序的版本,Android终于准备正式支持.从自己开发JavaFx的感受,说一说Java 8应该使用 ...
- javascript的面向对象详解
每次说到javascript到面向对象,总感觉自己心里懂,但是却不知道该怎么说,这就是似懂非懂到表现,于是乎,每次一说,就要到处去查找资料,零零碎碎到看了一些,感觉有懂了,但是过段时间,好像又不知道是 ...