是否可以使用一个java
命令执行两个单独的类?
我想为我的项目同时运行一些java程序(它应该同时启动)。
示例:我有两个java程序A.java
和B.java
。
javac A.java B.java
java A B
然而,这不起作用。我怎么能这样做?
答案 0 :(得分:1)
不,java
command根本不起作用。
而是C.java
同时调用A
& B
课程。
答案 1 :(得分:1)
创建一个类,说Parallel
具有其他类名称的命令行参数。
然后为每个类启动一个新线程并调用它的主。
可能可以做得更整洁。
java Parallel A B
public class Parallel {
public static void main(String[] args) {
for (String arg : args) {
try {
Class<?> klazz = Class.forName(arg);
final Method mainMethod = klazz.getDeclaredMethod("main",
String[].class);
if (mainMethod.getReturnType() != void.class) {
throw new NoSuchMethodException("main not returning void");
}
int modifiers = mainMethod.getModifiers();
if (!Modifier.isStatic(modifiers)
|| !Modifier.isPublic(modifiers)) {
throw new NoSuchMethodException("main not public static");
}
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
mainMethod.invoke(null, (Object)new String[0]);
} catch (IllegalAccessException
| IllegalArgumentException
| InvocationTargetException ex) {
Logger.getLogger(Parallel.class.getName())
.log(Level.SEVERE, null, ex);
}
}
});
thread.start();
} catch (ClassNotFoundException
| NoSuchMethodException
| SecurityException ex) {
Logger.getLogger(Parallel.class.getName())
.log(Level.SEVERE, null, ex);
}
}
}
}
答案 2 :(得分:0)
不,CPU将始终作为第一个启动一个命令,你可以做的是让两个线程等待一些通知,告知它们开始,但即便如此,我猜其中一个将开始为另一个
答案 3 :(得分:0)
无论你多么努力地同时启动它们,输出都不会一致。即使您尝试通过第三个类加载它们,这也不会起作用。
您可以做的是您需要在代码中处理此逻辑。可能的选项是 -