📄 dpiclient.java
字号:
// RMI偵傛傞暘嶶張棟僾儘僌儔儉偺幚憰椺
// (5)僋儔僀傾儞僩僾儘僙僗幚憰偺僋儔僗僼傽僀儖
// DPiClient.java
// 偙偺僋儔僗偼丄僋儔僀傾儞僩僾儘僙僗偺僋儔僗偱偡
// 暘嶶張棟僔僗僥儉偵偍偗傞僋儔僀傾儞僩偺婡擻傪婰弎偟傑偡
// RMI儗僕僗僩儕偵偍偗傞柤慜偺庢摼傗丄僒乕僶傊偺巇帠偺埶棅傪峴偄傑偡
// 巊梡曽朄
// java DPiClient 僒乕僶柤1 僒乕僶柤2 丒丒丒
// 側偍丄僋儔僀傾儞僩婲摦偺慜偵丄僒乕僶偲儗僕僗僩儕傪婲摦偟偰偔偩偝偄
// 儔僀僽儔儕偺棙梡
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.net.MalformedURLException;
import java.rmi.NotBoundException;
import java.util.* ;
//DPiClient僋儔僗
public class DPiClient{
// main儊僜僢僪
public static void main(String args[]){
long result=0 ;//僒乕僶偺寁嶼寢壥傪奿擺偡傞
long millis ;//宱夁帪娫
long maxloopcount=10000000 ;//揰偺屄悢
int i ;//僒乕僶偺悢
//僗儗僢僪傪峔惉偡傞偨傔偺攝楍傪愰尵偡傞
// DPiClient偱偼丄僒乕僶偺悢偩偗僗儗僢僪傪嶌惉偟傑偡
// 奺僗儗僢僪偼僒乕僶偺寁嶼張棟廔椆傪懸偪丄
// 廔椆屻Result僋儔僗偺僆僽僕僃僋僩偵寢壥傪曬崘偟傑偡
launchPiServer l[] = new launchPiServer[args.length];
Thread t[] = new Thread [args.length];
//張棟偺杮懱
try{
//張棟帪娫寁應奐巒
millis = System.currentTimeMillis() ;
//堷悢偱巜掕偝傟偨僒乕僶偵張棟傪埶棅偟傑偡
for(i=0;i<args.length;++i){
//堷悢偺屄悢偩偗張棟傪孞傝曉偟傑偡
//奺僒乕僶偛偲偵僗儗僢僪傪妱傝摉偰傞
l[i] = new launchPiServer(args[i],
maxloopcount/args.length,millis) ;
t[i] = new Thread(l[i]) ;
t[i].start() ;//張棟偺奐巒
}
}catch(Exception e){
System.out.println(e) ;
}
}
}
// launchPiServer僋儔僗
// 僒乕僶偵懳偟偰張棟傪埶棅偟丄寢壥傪庴偗庢傝傑偡
// 僒乕僶偐傜庴偗庢偭偨張棟寢壥偼丄
//Result僋儔僗偺collect()儊僜僢僪偱廤寁偟傑偡
class launchPiServer implements Runnable{
String address ;//僒乕僶偺傾僪儗僗傪奿擺偡傞
long maxl ;//孞傝曉偟偺夞悢(揰偺悢)
long millis ;//張棟奐巒帪崗傪奿擺偡傞
//僐儞僗僩儔僋僞
public launchPiServer(String name, long maxloopcount,
long m){
//屇傃弌偟懁偐傜庴偗庢偭偨抣傪僋儔僗撪晹偱曐帩偟傑偡
address = name ;
maxl = maxloopcount ;
millis = m ;
}
//僗儗僢僪偺杮懱
public void run(){
Pi p ;//僒乕僶梡僆僽僕僃僋僩
try{
//PiService偺棙梡
p = (Pi)Naming.lookup("//"+address+"/PiService") ;
//僒乕僶偑尒偮偐偭偨偺偱丄張棟傪埶棅偟傑偡
System.out.println("Start "+ address) ;
Result.collect(address,maxl,millis,p.putPi(maxl));
}catch(Exception e){
System.out.println(e) ;
}
}
}
// Result僋儔僗
// 奺僒乕僶偐傜曉偝傟偨抣傪廤寁偟傑偡
class Result{
static int i=0 ;
static long all=0 ;
//collect儊僜僢僪
// 暋悢偺僗儗僢僪偐傜屇傃弌偝傟傞偨傔丄攔懠惂屼偑昁梫偵側傝傑偡
// 偙偺偨傔丄synchronized偲偄偆僉乕儚乕僪傪晅偗偰
// 儊僜僢僪傪愰尵偟傑偡
// 堷悢偺堦棗
// address 僒乕僶偺傾僪儗僗
// maxloopcount 僒乕僶偑惗惉偟偨揰偺屄悢
// misllis 張棟奐巒帪崗
// res 墌偺撪懁偵擖偭偨揰偺屄悢
// collect()儊僜僢僪
static public synchronized void
collect(String address,long maxloopcount,long millis,
long res){
System.out.println("Finish "+address) ;
// 墌廃棪兾偺嬤帡抣偺寁嶼
all+=res ;//偙傟傑偱偺寢壥偵丄怴偨偵摼傜傟偨寢壥傪壛嶼
++i ;//曉帠傪曉偟偨僒乕僶偺屄悢傪悢偊傑偡
//兾偺嬤帡抣傪弌椡偟傑偡
System.out.println(" " +
(double)all/(maxloopcount*i)*4) ;
//宱夁帪娫傪弌椡偟傑偡
millis = System.currentTimeMillis() - millis ;
System.out.println(" " + (double)millis/1000 + "sec") ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -