轉(zhuǎn)帖|其它|編輯:郝浩|2010-07-13 11:11:04.000|閱讀 521 次
概述:一般我們?cè)趈ava中運(yùn)行其它類中的方法時(shí),無(wú)論是靜態(tài)調(diào)用,還是動(dòng)態(tài)調(diào)用,都是在當(dāng)前的進(jìn)程中執(zhí)行的,也就是說(shuō),只有一個(gè)java虛擬機(jī)實(shí)例在運(yùn)行。而有的時(shí)候,我們需要通過(guò)java代碼啟動(dòng)多個(gè)java子進(jìn)程。本文主要探討Java的多進(jìn)程運(yùn)行模式分析。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
// Test1.java文件 import java.io.*; public class Test { public static void main(String[] args) { FileOutputStream fOut = new FileOutputStream("c:\\Test1.txt"); fOut.close(); System.out.println("被調(diào)用成功!"); } } // Test_Exec.java public class Test_Exec { public static void main(String[] args) { Runtime run = Runtime.getRuntime(); Process p = run.exec("java test1"); } } |
// Test_Exec_Out.java import java.io.*; public class Test_Exec_Out { public static void main(String[] args) { Runtime run = Runtime.getRuntime(); Process p = run.exec("java test1"); BufferedInputStream in = new BufferedInputStream(p.getInputStream()); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String s; while ((s = br.readLine()) != null) System.out.println(s); } } |
// Test2.java文件 import java.io.*; public class Test { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("由父進(jìn)程輸入的信息:" + br.readLine()); } } // Test_Exec_In.java import java.io.*; public class Test_Exec_In { public static void main(String[] args) { Runtime run = Runtime.getRuntime(); Process p = run.exec("java test2"); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream())); bw.write("向子進(jìn)程輸出信息"); bw.flush(); bw.close(); // 必須得關(guān)閉流,否則無(wú)法向子進(jìn)程中輸入信息 // System.in.read(); } } |
// Test_Exec_Out.java import java.io.*; public class Test_Exec_Out { public static void main(String[] args) { ProcessBuilder pb = new ProcessBuilder("java", "test1"); Process p = pb.start(); … … } } |
ProcessBuilder pb = new ProcessBuilder("Command", "arg2", "arg2", '''); // 設(shè)置環(huán)境變量 Map<String, String> env = pb.environment(); env.put("key1", "value1"); env.remove("key2"); env.put("key2", env.get("key1") + "_test"); pb.directory("..\abcd"); // 設(shè)置工作目錄 Process p = pb.start(); // 建立子進(jìn)程 |
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載