Java 如何同时运行两个不同的主类?

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中的两个不同的主类,但是我希望同时运行这两个类

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();
}