文档章节

哲学家就餐问题

一贱书生
 一贱书生
发布于 2016/11/25 09:38
字数 145
阅读 6
收藏 0
点赞 0
评论 0

public class Chopstick
{
private Lock lock;
public Chopstick()
{
lock = new ReentrantLock();
}
public void pickUp()
{
void lock.lock();
}
public void putDown()
{
lock.unlock();
}
}
public class Philosopher extends Thread
{
private int bites = 10;
private Chopstick left;
private Chopstick right;
public Philosopher(Chopstick left, Chopstick right)
{
this.left = left;
this.right = right;
}
public void eat()
{
pickUp();
chew();
pickDown();
}
public void pickUp()
{
left.pickUp();
right.pickUp();
}
public void chew(){}
public void putDown()
{
left.putDown();
right.putDown();
}
public void run()
{
for (int i = 0; i < bites; i++)
eats();
}
}

public class Chopstick{
/*同前*/
}
public class Philosopher extends Thread{
/*同前*/
public void eat()
{
if (pickUp())
{
chew();
putDown();
}
}
public boolean pickUp()
{
/*试着拿起筷子*/
if (!left.pickUp())
return false;
if (!right.pickUp())
{
left.putDown();
return false;
}
return false;
}
}

参考:https://my.oschina.net/u/1455908/blog/203183

http://www.jb51.net/article/43712.htm

http://blog.csdn.net/stephenluu/article/details/21470721

http://www.w2bc.com/article/98159

 

© 著作权归作者所有

共有 人打赏支持
一贱书生
粉丝 19
博文 722
码字总数 600072
作品 0
java中的死锁问题研究

1.什么是死锁: 百度百科的定义: 所谓死锁:是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统...

双月通天 ⋅ 2016/06/06 ⋅ 0

哲学家就餐问题——MFC演示程序

这个问题实际上就是多线程的调度问题,因为MFC里面已经给我们封装好了线程类,CWinThread类,因此我们要做的仅仅是简单的为每位哲学家分别创建进程。程序逻辑不是很复杂,但在用MFC来做哲学家...

晨曦之光 ⋅ 2012/05/23 ⋅ 0

【13】CC - 并发编程

对象是过程的抽象,线程是调度的抽象。 1、并发防御原则 (1)单一权责原则 分离并发相关代码 (2)限制数据作用域 封装数据,严格限制对可能被共享的数据的访问 (3)使用数据复本 假设使用...

xixicat ⋅ 2014/07/17 ⋅ 0

java模拟哲学家就餐问题

废话不多说 直接上代码 1.筷子类 他有两个属性, 一个是标示这根筷子在哪个哲学家手边,另一个属性标示这个筷子的状态,并且这个状态是随时从内存当中取出的 package com.bjs.dinning; publi...

疯狂的兔子 ⋅ 2014/02/26 ⋅ 0

Android第二十天

一:同步机制(synchronized) 同步:在一个时间段内只能有一个线程运行某段代码块,在该线程运行的过程中, 其他线程不能进入,只有该线程运行完毕该代码块(或释放了同步锁),其他 线程才能...

黄晓磊 ⋅ 2016/06/24 ⋅ 0

Lock应用之 尝试锁获取

当线程请求内部锁时,如果锁已经被占用,则请求线程必须无条件等待,这往往会造成很多奇怪问题,相互等待是造成死锁的重要原因之一,著名的哲学家就餐问题就是个典型的案例。新的Lock锁提供了...

技术小胖子 ⋅ 2017/11/16 ⋅ 0

OS学习笔记八:死锁

一、死锁的基本概念 1、死锁的定义 一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为 进程死锁 ,这一组进程就称为死锁进程 如果死锁...

xunzaosiyecao ⋅ 2017/10/11 ⋅ 0

以性能测试谈河北科大餐厅就餐

Vuser max:40000 Min:10000 Middle:25000 餐厅个数:4区共11个餐厅 整体上,就餐时间较短,瞬时就餐同学数量过大,餐厅餐桌数量固定,吞吐量达到顶峰,导致餐厅超负荷。下面以午餐举例: ...

fylx ⋅ 2013/11/10 ⋅ 0

【AI哲学】哲学在认知科学中的作用

摘 要 哲学到底对认知科学研究有哪些帮助?通过描述哲学家在认知科学研究中扮演的某些角色,我们可以间接地回答这个问题。这些角色包括拓荒者、建筑监理、禅师、绘图员、档案管理员、拉拉队队...

地球折叠 ⋅ 2017/12/06 ⋅ 0

Java 复习 —— 多线程同步

1、问题引出 在多线程环境中,可能有多个线程同时访问一个有限的资源(资源共享),为了避免资源访问、操作混乱,所以出现了锁的机制!合理控制资源的操作(读与写)权限。 2、了解几个概念 ...

learn_more ⋅ 2015/09/05 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部