快速业务通道

构建自己的基于Java的超级计算机 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
机上可用的特定资源(诸如数据库或是打印机),则可以指定主机。

HostSelector 是一个模块。如果您没有指定远程主机,PseudoRemThr类就会调用HostSelector 模块来选择特定的主机。如果没有空闲的主机,HostSelector 会返回负载最小的远程计算机。如果某个远程计算机是一个多处理器系统,HostSelector 可能会不止一次地返回该主机名。目前,HostSelector 无法根据给定任务的复杂程度来选择主机。

伪远程线程的工作方式

要使用伪远程线程,您必须实现作业调度器和运行服务器。本节将说明如何实现各个部分。

实现作业调度器

首先,将主任务分解为数据或功能独立的子任务。针对每个子任务,定义一个实现JobCodeInt接口(从而实现jobCode()方法)的类。在jobCode()方法中,定义各给定子任务要执行的代码。

请注意,您不能调用作业调度器上用户定义的的本地资源。请在该方法外部初始化所有这类资源。例如,您可以在SubTask类的构造函数中初始化这类资源。

创建类 PseudoRemThr的若干实例,并将 SubTask的实例传递给 PseudoRemThr的各个实例。如果您要明确指定一台远程主机,您可以通过调用PseudoRemThr 对象的另一个构造函数来完成。

等待这些线程完成。调用getResult()方法来获取 PseudoRemThr的各个实例的执行结果。如果计算没有完成,结果返回一个值为 false的Boolean 对象;否则,将返回 Object类的一个实例,其中包含了计算结果。您必须将此实例转换为您所希望的类类型。将所有的子任务结果组合为最终结果。

实现运行服务器

实现运行服务器是一项简单的工作:

启动 RMI 注册程序。

启动 RunServer。

运行服务器在启动时接通作业调度器,并通知作业调度器它已准备就绪,可以接受要执行的任务了。

构建自己的基于Java的超级计算机(2)

时间:2010-05-21

一个计算示例

现在该测试这一模型了。以下计算示例使用两台计算机并行运行。一台是运行 Windows 98的333 MHz Pentium II 计算机,另一台是运行 Windows 2000 专业版的500 MHz Pentium III 计算机。

为了计算从1到10^9的所有整数的平方根之和,我创建了Sqrt类,它计算dblStart和dblEnd之间所有整数的平方根之和。

Sqrt 实现JobCodeInt接口,因此也实现了jobCode()方法。在jobCode()方法中,我定义了完成这一计算的代码。

构造函数用于将数据传递给 Sqrt类,并初始化作业调度器上的所有本地资源。必须将要计算其平方根之和的整数的起止点发送给构造函数。清单1 是 Sqrt类的定义

清单1. 定义Sqrt类

//Sqrt类计算dblStart和dblEnd之间的所有整数的平方根之和。 //计算在jobCode()方法内完成 //该类实现JobCodeInt接口,且实现代码位于jobCode()方法内 //在构造函数中将数据传递给该类,并初始化作业调度器上的本地资源。 //本例中,要计算其平方根之和的整数序列的起止点被发送给 Sqrt类 public class Sqrt implements JobCodeInt {  double dblStart, dblEnd, dblPartialSum;  public Sqrt(double Start,double End)  {   dblStart = Start;   dblEnd = End;  }  public Object jobCode()  {   dblPartialSum = 0;   for(double i=dblStart;i<=dblEnd;i++)    //可调用标准的Java 函数和对象。    dblPartialSum += Math.sqrt(i);    //返回结果,一个标准 Java类的对象。    return (new Double(dblPartialSum));  } }

JobDispatcher类创建 Sqrt类的两个实例。然后分解主任务,将一项子任务分配给一个 Sqrt 对象(Sqrt1),并将余下的子任务分配给另一个 Sqrt 对象(Sqrt2)。接下来,JobDispatcher 创建 PseudoRemThr类的两个对象,并将 Sqrt 对象作为参数分别传递给它们。接下来就等待线程执行。

一旦线程执行完毕,就可从每个 Pse

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号