资源简介
java实现同步算法在分布式系统中的实现与应用,用lamport算法解决停车场问题
代码片段和文件信息
import java.util.linkedList;
import java.util.ListIterator;
import javax.swing.JOptionPane;
public class EntryPort {
private int logicalTime = 0 replyCount = 0 joinReply;
public int unoccupiedNum entryNum exitNum totalPortNum;
public Mailbox mailbox;
private int id;
private boolean criticalEntered = false;
private Message applyMsg = null;
private linkedList appList;
public EntryPort(int id InitialView initialView)
{
this.unoccupiedNum = initialView.unoccupiedNum;//空位数
this.entryNum = initialView.entryNum;
this.exitNum = initialView.exitNum;
this.totalPortNum = this.entryNum + this.exitNum;
this.id = id;//本地ID号
this.mailbox = new Mailbox(initialView);
appList = new linkedList();
}
public synchronized void apply(){
try
{
if(unoccupiedNum == 0){
JOptionPane.showMessageDialog(null“There is no space left now. Please wait...“
“Info“JOptionPane.INFORMATION_MESSAGE);
return ;
}
Message applyMsg = new Message(1 logicalTime 0 id 1);
++logicalTime;
replyCount = entryNum - 1;
for(int i = 0; i < entryNum; ++i)
{
applyMsg.clock = logicalTime;
++logicalTime;
if (id != i)
{
mailbox.send(1 i applyMsg);
}
}
while(replyCount != 0)
{
wait();
}
while (unoccupiedNum == 0)
{
wait();
}
criticalEntered = true;
release();
}
catch(Exception e)
{
System.out.println(e);
}
}
public synchronized void jion(){
try
{
joinReply = entryNum - 1;
Message msg = new Message(5 -1 0 id 1);
for(int i = 0; i < entryNum; ++i)
{
msg.clock = logicalTime;
++logicalTime;
if (id != i)
{
mailbox.send(1 i msg);
}
}
while(joinReply != 0)
{
wait();
}
criticalEntered = true;
joinReply = exitNum;
for(int i = 0; i < exitNum; ++i)
{
msg.clock = logicalTime;
++logicalTime;
mailbox.send(0 i msg);
}
while(joinReply != 0)
{
wait();
}
msg = new Message(1 logicalTime logicalTime id 1);
for(int i = 0; i < exitNum; ++i)
{
msg.clock = logicalTime;
++logicalTime;
mailbox.send(0 i msg);
}
msg = new Message(2 logicalTime logicalTime id 1);
ListIterator iter = appList.listIterator();
while(iter.hasNext())
{
msg.clock = logicalTime;
++logicalTime;
mailbox.send(1 msg.source msg);
iter.remove();
}
applyMsg = null;
criticalEntered = false;
System.out.println(“A new entry has been added successfully!“);
}
catch(Exception e)
{
System.out.println(e);
}
}
public void receive(){
try
{
Message msg = mailbox.pop();
synchronized(this)
{
logicalTime = 1 + ((msg.clock > logicalTime)? msg.clock : logicalTime);
//1:application; 2:reply;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6546 2009-01-01 21:41 停车场问题实验源程序\EntryPort.java
文件 2512 2009-01-01 15:17 停车场问题实验源程序\ExitPort.java
文件 4695 2008-12-21 20:53 停车场问题实验源程序\InitialView.java
文件 714 2008-12-16 10:54 停车场问题实验源程序\ListTest.java
文件 1084 2009-01-01 15:18 停车场问题实验源程序\Mailbox.java
文件 459 2009-01-01 15:02 停车场问题实验源程序\Message.java
文件 203 2008-12-16 11:17 停车场问题实验源程序\NewTest.java
文件 28 2008-12-13 13:26 停车场问题实验源程序\Port.java
文件 3561 2009-01-01 08:56 停车场问题实验源程序\PortPanel.java
文件 1007 2008-12-15 14:17 停车场问题实验源程序\Test.java
文件 279 2008-12-19 17:14 停车场问题实验源程序\Test1.java
文件 567 2008-12-16 10:43 停车场问题实验源程序\UseClass.java
目录 0 2009-01-01 15:16 停车场问题实验源程序
----------- --------- ---------- ----- ----
21655 13
相关资源
- 解决了通过java访问OPC Server中文乱码的
- R树的Java实现 可直接在eclipse下运行
- 简单的java大数阶乘运算算法
- java随机数生成器
- JAVA JSP工资管理系统 源代码 论文
- zip带密码压缩解压缩工具类java
- Java 课程设计学习成绩管理系统
- 模电,数电,stm32,java等培训视频集
- gson-2.8.0包括sources和javadoc
- RAS算法Java实现
- Java EE互联网轻量级框架整合开发 SS
- 操作系统实验 内存管理 java编写 有界
- java-javaweb以及各种框架教学视频百度
- jd-gui反编译,用来反编译jar包和clas
- 操作系统实验和课设,java实现动态内
- 操作系统课设,用java实现磁盘调度算
- (swing+mysql+jdbc员工管理系统
- 使用servlet和jsp做的一个简易的微博系
- Java中的集合
- 简易宠物商店Java源代码
- 人力资源管理系统带数据库
- java刽子手
- java 设计模式之绘图程序
- springsource.org.apache.commons.logging-1.1.1.
- Java+mysql 教务管理系统 带数据库
- 决策树算法JAVA实现包括C4.5和ID3
- junit-5.2.3.jar
- Java小超市管理系统
- hadoop实战源代码Java
- 基于java校友信息
评论
共有 条评论