我可以同时执行多个方法吗?

时间:2016-12-28 01:03:34

标签: java

我想要的只是同时执行三种或更多方法

我不是指Threads,因为我已尝试过线程,但它只是一次执行一个方法

public void run() {
  System.out.println("Running " +  threadName );
  try {
     for(int i = 4; i > 0; i--) {
        System.out.println("Thread: " + threadName + ", " + i);
        // Let the thread sleep for a while.
        Thread.sleep(50);
     }
  }catch (InterruptedException e) {
     System.out.println("Thread " +  threadName + " interrupted.");
  }
  System.out.println("Thread " +  threadName + " exiting.");

}

在这段代码中,一个方法将执行,然后等待执行另一个方法

但我想要的是让三个方法同时执行。

有可能吗?如果是我怎么做,从哪里开始?

1 个答案:

答案 0 :(得分:3)

您可能已尝试过线程,但听起来如果每个方法单独运行,您都没有正确尝试它们。尝试这样的事情:

public static void someMethod(int i) {
    String me = Thread.currentThread().getName();
    Random r = new Random();
    while (i-- >= 0) {
        System.out.println(me + ": i=" + i);
        try {
            // sleep some random time between 50 and 150 ms
            Thread.sleep(r.nextInt(100) + 50);
        } catch (InterruptedException e) {
            System.out.println(me + " interrupted");
            return;
        }
    }
    System.out.println(me + " exiting");
}

public static void main(String[] args) {
    int numThreads = 4;
    for (int i = 0; i < numThreads; ++i) {
        new Thread("Thread " + i) {
            @Override public void run() { someMethod(10); }
        }.start();
    }
}

您将看到someMethod的输出混合在一起的所有线程。每次运行代码时它都应该不同。