两个循环几乎同时进行

时间:2010-10-05 15:25:13

标签: java loops

我不知道这个过程被称为什么,但我已经看到它是可能的。 这个过程叫什么?

基本上,我有一个有循环的方法,并且在每次迭代中都有一个延迟秒。

function myLoop(float delay)
{
    for(int x=0; x<100; x++)
    {
        Print("Loop number: " + x);
        TimeDelay(delay);
    }
}

我想在没有等到第一个实例完成的情况下运行第二个实例。

function main()
{
     myLoop(2);
     myLoop(2);
}

所以一旦第一个myLoop开始,我希望第二个myLoop立即启动,它们将同时运行,我的问题是,你称之为这个过程是什么? 这个过程可能吗?(例如在java中)。

非常感谢! :)

4 个答案:

答案 0 :(得分:2)

这通常需要某种形式的multithreading

您可以这样做:

function main
    start thread, calling myLoop(2)
    start thread, calling myLoop(2)

    ' Potentially wait for threads to complete
end function

有关如何在Java中使用它的详细信息,请参阅Concurrency Tutorial

答案 1 :(得分:1)

您的程序的Java实现将类似于此。

    class MyThread implements Runnable{
       Thread t;
       int delay;
       MyThread (int delay) {
          t = new Thread(this,"My thread");
          this.delay = delay;
          t.start();
       }
       public void run() {
          for(int x=0; x<100; x++)
          {
           Print("Loop number: " + x);
           TimeDelay(delay);
          }
      }
    }
    class Demo {
       public static void main (String args[]){
         Thread t1 = new MyThread(2);
         Thread t2 = new MyThread(2);
         t1.join();
         t2.join();    
       }
    }

答案 2 :(得分:0)

您的问题的答案。

  1. 这叫什么? 答:线程 - 同时运行多个任务。 (我们称之为在PHP / Linux应用程序中分叉。)

  2. 这在Java中可行吗? 答:这是可能的。坦率地说,这在Java中更容易实现。请按照上述答案。

答案 3 :(得分:0)

这称为异步计算。你可以用期货干净利落地解决这个问题。 (你真的不需要做全面的多线程)

http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html