资源简介
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源码,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论坛 非常详细
评论
共有 条评论