多線程執行多任務

如何通過多線程執行單個任務?

如果必須由多個線程執行單個任務,則只有通過run()方法。例如:
由多個線程執行單個任務的程序。

package com.yiibai;

class TestMultitasking1 extends Thread {
    public void run() {
        System.out.println("task one");
    }

    public static void main(String args[]) {
        TestMultitasking1 t1 = new TestMultitasking1();
        TestMultitasking1 t2 = new TestMultitasking1();
        TestMultitasking1 t3 = new TestMultitasking1();

        t1.start();
        t2.start();
        t3.start();
    }
}

執行上面示例代碼,得到以下結果:

task one
task one
task one

多個線程執行單個任務的程序 -

package com.yiibai;

class TestMultitasking2 implements Runnable {
    public void run() {
        System.out.println("task one");
    }

    public static void main(String args[]) {
        Thread t1 = new Thread(new TestMultitasking2());// passing annonymous object of TestMultitasking2 class
        Thread t2 = new Thread(new TestMultitasking2());

        t1.start();
        t2.start();

    }
}

執行上面示例代碼,得到以下結果:

task one
task one

注意: 每個線程都在一個單獨的調用堆棧中運行。

多線程執行多任務

如何通過多線程執行多個任務(多線程中的多任務處理)?

如果想要通過多個線程執行多個任務,請使用多個run()方法。例如:
通過兩個線程執行兩個任務的程序 -

package com.yiibai;

class Simple1 extends Thread {
    public void run() {
        System.out.println("task one");
    }
}

class Simple2 extends Thread {
    public void run() {
        System.out.println("task two");
    }
}

class TestMultitasking3 {
    public static void main(String args[]) {
        Simple1 t1 = new Simple1();
        Simple2 t2 = new Simple2();

        t1.start();
        t2.start();
    }
}

執行上面示例代碼,得到以下結果:

task two
task one

使用擴展Thread類的匿名類相同的例子:

通過兩個線程執行兩個任務的程序 -

class TestMultitasking4 {
    public static void main(String args[]) {
        Thread t1 = new Thread() {
            public void run() {
                System.out.println("task one");
            }
        };
        Thread t2 = new Thread() {
            public void run() {
                System.out.println("task two");
            }
        };

        t1.start();
        t2.start();
    }
}

執行上面示例代碼,得到以下結果:

task two
task one

使用實現Runnable接口的相同例子:

通過兩個線程執行兩個任務的程序 -

class TestMultitasking5{  
 public static void main(String args[]){  
  Runnable r1=new Runnable(){  
    public void run(){  
      System.out.println("task one");  
    }  
  };  

  Runnable r2=new Runnable(){  
    public void run(){  
      System.out.println("task two");  
    }  
  };  

  Thread t1=new Thread(r1);  
  Thread t2=new Thread(r2);  

  t1.start();  
  t2.start();  
 }  
}

執行上面示例代碼,得到以下結果:

task two
task one