[英]Simultaneously run java programs run on same JVM?
假設我在同一台機器上同時運行兩個java程序。 程序是在單個JVM實例中運行還是在兩個不同的JVM實例中運行?
java
可以一次只打開一個應用程序,但你可以編寫一個簡單的啟動程序 ,它將類名作為參數並在不同的線程中執行它們。 快速概述:
public class Launcher {
public static void main(String[] args) throws Exception {
for (int i = 0; i<args.length; i++) {
final Class clazz = Class.forName(args[i]);
new Thread(new Runnable() {
@Override
public void run() {
try{
Method main = clazz.getMethod("main", String[].class);
main.invoke(null, new Object[]{});
} catch(Exception e) {
// improper exception handling - just to keep it simple
}
}
}).start();
}
}
}
稱之為
java -cp <classpath for all applications!> Launcher com.example.App1 com.example.App2
應該在同一個VM內並行執行應用程序App1和App2。
它取決於平台和JVM實現,但通常它們將在不同的VM中運行。
假設您通過單詞程序來表示進程,那么啟動兩個進程,將創建兩個不同的JVM。
使用java應用程序啟動器啟動JVM進程; 這應該是你的程序的入口點,這是主要的方法。 您可以從此入口點以及其他類中鏈接到其他類。 除非您啟動另一個進程(運行另一個程序),否則這將繼續在同一JVM進程中發生。
程序是在單個JVM實例中運行還是在兩個不同的JVM實例中運行?
那取決於你。 最簡單的方法是使用單獨的JVM。
你可以做的是使用兩個單獨的線程。 例如
new Thread() {
public void run() {
System.out.println("this is running separately from the main thread!");
}
}.start();
如果您想要兩個獨立的程序進行交互,則需要使用套接字
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.