云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > fourinone源代码分析

fourinone源代码分析

  • 62 次阅读
  • 3 次下载
  • 2026/1/10 15:53:22

//Exception in thread \//at WorkerDemo.main(WorkerDemo.java:21)

//该错误为数组下界越标,因main()入口函数中新建WorkerDemo对象时使用arg[0]参数。 //如果运行WorkerDemo命令时没输入任何参数则提未错误 import com.fourinone.MigrantWorker; import com.fourinone.WareHouse;

public class WorkerDemo extends MigrantWorker { private String workname; public WorkerDemo(String workname) { this.workname = workname; } public WareHouse doTask(WareHouse inhouse) { String v = inhouse.getString(\ System.out.println(workname+\ return new WareHouse(\ } public static void main(String[] args) { WorkerDemo wd = new WorkerDemo(args[0]); wd.waitWorking(\ } }

3、最后运行包工头(CtorDemo)程序。

包工头向职介所获取工人信息,并把由第一个包工头把任务链式地(串行)分配给工人同时处理(并行)。

源文件为: CtorDemo.java

import com.fourinone.Contractor; import com.fourinone.WareHouse; import com.fourinone.WorkerLocal; import java.util.ArrayList;

public class CtorDemo extends Contractor { private String ctorname;

}

CtorDemo(String ctorname) { this.ctorname = ctorname; }

public WareHouse giveTask(WareHouse inhouse) { WorkerLocal[] wks = getWaitingWorkers(\ System.out.println(\ String outStr = inhouse.getString(\ WareHouse[] hmarr = new WareHouse[wks.length];

int data=0; for(int j=0;j<20;) { for(int i=0;i

public static void main(String[] args) { Contractor a = new CtorDemo(\ a.toNext(new CtorDemo(\ WareHouse house = new WareHouse(\ System.out.println(a.giveTask(house,true)); }

4、前两例总结:

有四个对象需明确:ParkServer(职介所)、Worker(工人)、Contractor(工头)、WareHouse(手工仓库,或任务)。

①ParkServer优先运行保证工人能登记信息,工头能获取工人信息; ②工人获取leader server(职介所),并登记自己的名称,所属类型,端口等信息,登记后等待被分配任务waitingWorking()。在执行任务时被工头调用doTask()方法;

③工头从职介所获取工人信息getWaitingWorkers(),并以giveTask()方法分配任务给各工人; ④WareHouse作为任务对象,表示要处理的信息,不管是doTask()还是giveTask()都以WareHouse对象为参数传递,最后也返回处理后的WareHouse任务对象。 ⑤因此,在整个分布设计中,基本遵循开办职介所、工人主动登记信息、工头把任务Warehouse分配给工人处理的过程。

五、工头向工人说hello,工人互相说hello,并批量处理工头任务 1、首先运行职介所(ParkServerDemo)程序。

必须首先运行,用于给工人登记及包工头获取工人信息。

源文件为:ParkServerDemo.java(与上面例子同,此处不再重复) 2、然后运行工人(HelloWorker)程序。

工人向职介所登记自己,并等待任务。此处的任务与前面两例不同,工人除了完成工头的任务(接收工头hello信息)并返回自己的名字(hello,I am XXX),还要用getWorkerElse()方法获取其它工人信息,并向其它工人说自己的名字(hello,I am XXX)。工人与工人之间的调用使用receive()方法进行,不用doTask()方法,doTask()方法是用于工头调用工人时。 源文件为:HelloWorker.java

import com.fourinone.MigrantWorker; import com.fourinone.WareHouse; import com.fourinone.Workman;

public class HelloWorker extends MigrantWorker { private String name; public HelloWorker(String name){ this.name = name; } public WareHouse doTask(WareHouse inhouse) { System.out.println(inhouse.getString(\ WareHouse wh = new WareHouse(\ Workman[] wms = getWorkerElse(\ for(Workman wm:wms) wm.receive(wh); return wh; } public boolean receive(WareHouse inhouse)

{ System.out.println(inhouse.getString(\ return true; } public static void main(String[] args) { HelloWorker mw = new HelloWorker(args[0]); mw.waitWorking(args[1],Integer.parseInt(args[2]),\ } }

3、最后运行包工头(HelloCtor)程序。

包工头向职介所获取工人信息,并向工人说hello,它调用批量处理方法doTaskBatch(),要等到该集群中的所有工人最慢的那个完任务后才返回,如果要让快的工人再接受新的任务,请用第“四”轮循的办法。注意,工头最后用HelloCtor.exit();方法退出jvm环境。 源文件为:HelloCtor.java

import com.fourinone.Contractor; import com.fourinone.WareHouse; import com.fourinone.WorkerLocal;

public class HelloCtor extends Contractor { public WareHouse giveTask(WareHouse inhouse) { WorkerLocal[] wks = getWaitingWorkers(\ System.out.println(\ WareHouse wh = new WareHouse(\ WareHouse[] hmarr = doTaskBatch(wks, wh); for(WareHouse result:hmarr) System.out.println(result); return null; } public static void main(String[] args) { HelloCtor a = new HelloCtor(); a.giveTask(null); a.exit(); } }

可以工头程序改动一下,变为在命令后输入hello信息,改动后如下: import com.fourinone.Contractor;

搜索更多关于: fourinone源代码分析 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

//Exception in thread \//at WorkerDemo.main(WorkerDemo.java:21) //该错误为数组下界越标,因main()入口函数中新建WorkerDemo对象时使用arg[0]参数。 //如果运行WorkerDemo命令时没输入任何参数则提未错误 import com.fourinone.MigrantWorker; import com.fourinone.WareHouse; public class WorkerDemo extends MigrantWorker { private String workname; public WorkerDemo(String workname) { this.workname = workname; } public WareHouse do

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com