Java 如何同时运行两个不同的主类?
我在代码中调用了for中的两个不同的主类,但是我希望同时运行这两个类Java 如何同时运行两个不同的主类?,java,for-loop,background,parallels,Java,For Loop,Background,Parallels,我在代码中调用了for中的两个不同的主类,但是我希望同时运行这两个类 for (int m=0; m<ListUser.size();m++){ System.out.println(ListUser.get(m)); File user = new File(ManagedPlatformPath.properties()+"/"+ListPlatform.get(n)+" /"+ListUser.get(m)+".adf"); if(user.exists()){ Syst
for (int m=0; m<ListUser.size();m++){
System.out.println(ListUser.get(m));
File user = new File(ManagedPlatformPath.properties()+"/"+ListPlatform.get(n)+" /"+ListUser.get(m)+".adf");
if(user.exists()){
System.out.println("Reading Information "+ListUser.get(m)+"");
BACControlS.main(args);
BACControlT.main(args);
}
else{
System.out.println("Not Information "+ListUser.get(m)+"");
}
for(int m=0;m生成两个线程
new Thread(new Runnable() {
public void run() {
BACControlS.main(args);
}
}).start();
new Thread(new Runnable() {
public void run() {
BACControlT.main(args);
}
}).start();
为了将参数传递给那些Runnable
,您可能需要将args
声明为final
您应该使用线程。您可以将其作为:
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
BACControlS.main(args);
}
});
t1.start();
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
BACControlT.main(args);
}
});
t2.start();
而不是
BACControlS.main(args);
BACControlT.main(args);
没有办法运行两个类,因为两个主类都被认为是不同的进程。所以你可以使用线程。线程可以并行运行。如果两个线程都在一个进程中,CPU将其视为一个进程,并将其视为一个进程。使用。正如其他Anwser建议的那样,在循环中创建s是个坏主意因为线程不是无限的资源,但是您的用户名列表可能很大
下面是代码的外观:
搜索“java并发性”在循环中,这可能不是一个好主意,如果“ListUser”有一百万个用户,你会尝试产生一百万个线程!看看使用java.util.concurrent.Executor
来提供一个线程池,并将java.lang.Runnable
传递给它。两个问题:这似乎可行,但由于任何原因,这个过程永远不会完成。我的意思是我正在运行我的在Netbeans中初始化,进程一直在运行,直到我决定停止它。怎么可能等到两个线程完成后再退出循环呢?executor
中的线程使JVM保持活动状态,因此需要调用ExecutorService.shutdown()
循环后-我将修改Demostate的答案。很好,很好!!!我做了一些更改,等待所有线程完成,然后退出循环。代码将按原样工作,ExecutorService。关机
在关机前等待所有任务完成,请参阅-
ExecutorService executorService = Executors.newFixedThreadPool(10);
try
{
for (String userName : users)
{
File userFile = ...
if (userFile.exists())
{
System.out.println("Reading Information " + userName);
executorService.execute(
new Runnable()
{
public void run()
{
BACControlS.main(args);
}
}
);
executorService.execute(
new Runnable()
{
public void run()
{
BACControlT.main(args);
}
}
);
}
else
{
System.out.println("Not Information " + userName);
}
}
}
finally
{
executorService.shutdown();
}