资源简介

多道程序缓冲区协调操作 如下图1所示,有多个PUT操作要不断循环地向Buffer1送字符数据,有Move1操作不断地将Buffer1的数据取到Buffer2,Move2操作不断地将Buffer1的数据取到Buffer3,有多个GET操作要不断地从Buffer2和Buffer3中取数据。PUT、 MOVE、 GET每次操作一个数据,为了在操作的过程中要保证数据不丢失, 每个Buffer每次只能接受一个PUT或一个Move或一个Get。运用进程同步和互斥机制设计一个多道程序完成上述操作

资源截图

代码片段和文件信息

package Main;



import UI.MainFace;
import UI.PopBufferCon;

public class Carrier extends Thread{
private int from;
private int to;
private int name;
private object obj;



public Carrier(int from int to int name) {
super();
this.from = from;
this.to = to;
this.name = name;
}

public void run()
{
while(manipulate.run)
{
synchronized(manipulate.buffer1)
{
try {
while(manipulate.buffer1.size() == 0)
{
System.out.println(“Buffer1 is emptyplease wait!“);
manipulate.waitNumber++;
MainFace.frame.settitle(getString.settitle(manipulate.waitNumber manipulate.buffer1.size() manipulate.buffer2.size() manipulate.buffer3.size()));
manipulate.buffer1.wait();

manipulate.waitNumber--;
MainFace.frame.settitle(getString.settitle(manipulate.waitNumber manipulate.buffer1.size() manipulate.buffer2.size() manipulate.buffer3.size()));

}

obj =  manipulate.buffer1.remove();

System.out.println(“Move “+obj+“ to“ + to+ “ form “+from);
//从1移出   更新容量显示
manipulate.strBuffer1[manipulate.NoBuffer1++] =(“Move “+obj+“ to“ + to+ “ form “+from);
manipulate.buffer1Con.remove(obj);
//设置弹出窗口的1标签
manipulate.buffer1Contain = manipulate.buffer1Con.toString();
PopBufferCon.B1.setText(manipulate.buffer1Contain);

MainFace.List1.setListData(manipulate.strBuffer1);
Thread.sleep((long)(Math.random()*300*manipulate.speed));
manipulate.buffer1.notify();
}
catch(InterruptedException e)
{
System.out.println(“Move “+name+“ to“ + to+“ is interrupted!“);
}
}

if(to == 2)
{
synchronized(manipulate.buffer2)
{
try {
while(manipulate.buffer2.size() == manipulate.buffer2Capacity)
{
System.out.println(“Buffer2 is fullplease wait“);
manipulate.waitNumber++;

MainFace.frame.settitle(getString.settitle(manipulate.waitNumber manipulate.buffer1.size() manipulate.buffer2.size() manipulate.buffer3.size()));
manipulate.buffer2.wait();
manipulate.waitNumber--;
MainFace.frame.settitle(getString.settitle(manipulate.waitNumber manipulate.buffer1.size() manipulate.buffer2.size() manipulate.buffer3.size()));
}

if(manipulate.buffer2.add(obj))
{
System.out.println(“Move “+obj+“ to 2 from 1“);
//记录buffer2动态显示过程
manipulate.strBuffer2[manipulate.NoBuffer2++] = (“Move “+obj+“ to 2 from 1“);
manipulate.buffer2Con.add(obj);  //更新buffer内的数据
manipulate.buffer2Contain = manipulate.buffer2Con.toString();
PopBufferCon.B2.setText(manipulate.buffer2Contain);
MainFace.List2.setListData(manipulate.strBuffer2);

Thread.sleep((long)(Math.random()*300*manipulate.speed));
manipulate.buffer2.notify();
}
}
catch(InterruptedException e)
{
System.out.p

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        396  2018-12-24 08:42  OSProject\.classpath

     文件        385  2018-12-24 08:42  OSProject\.project

     文件        642  2018-12-24 08:42  OSProject\.settings\org.eclipse.jdt.core.prefs

     文件       4049  2018-12-28 10:55  OSProject\bin\Main\Carrier.class

     文件       3364  2018-12-28 10:55  OSProject\bin\Main\Consumer.class

     文件       1327  2018-12-27 19:13  OSProject\bin\Main\getString.class

     文件       2206  2018-12-28 13:27  OSProject\bin\Main\manipulate.class

     文件       2773  2018-12-28 09:48  OSProject\bin\Main\Procedure.class

     文件        721  2018-12-28 09:37  OSProject\bin\UI\Dialog$1.class

     文件        664  2018-12-28 09:37  OSProject\bin\UI\Dialog$2.class

     文件       4395  2018-12-28 09:37  OSProject\bin\UI\Dialog.class

     文件       3084  2018-12-28 08:22  OSProject\bin\UI\MainFace.class

     文件       1732  2018-12-28 09:37  OSProject\bin\UI\MainInterface$1.class

     文件       1573  2018-12-28 09:37  OSProject\bin\UI\MainInterface$2.class

     文件        617  2018-12-28 09:37  OSProject\bin\UI\MainInterface$3.class

     文件        617  2018-12-28 09:37  OSProject\bin\UI\MainInterface$4.class

     文件       1106  2018-12-28 09:37  OSProject\bin\UI\MainInterface$5.class

     文件       1108  2018-12-28 09:37  OSProject\bin\UI\MainInterface$6.class

     文件       4301  2018-12-28 09:37  OSProject\bin\UI\MainInterface.class

     文件       1539  2018-12-27 20:56  OSProject\bin\UI\PopBufferCon.class

     文件       2468  2018-12-27 12:03  OSProject\hs_err_pid17456.log

     文件      43778  2018-12-27 12:03  OSProject\hs_err_pid21864.log

     文件     265058  2018-12-27 12:03  OSProject\replay_pid21864.log

     文件       4608  2018-12-28 10:55  OSProject\src\Main\Carrier.java

     文件       3209  2018-12-28 10:55  OSProject\src\Main\Consumer.java

     文件        763  2018-12-27 11:16  OSProject\src\Main\getString.java

     文件       1943  2018-12-28 13:27  OSProject\src\Main\manipulate.java

     文件       1981  2018-12-28 09:48  OSProject\src\Main\Procedure.java

     文件       3956  2018-12-28 09:37  OSProject\src\UI\Dialog.java

     文件       3277  2018-12-28 08:22  OSProject\src\UI\MainFace.java

............此处省略13个文件信息

评论

共有 条评论