多執行緒執行多工


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

如果必須由多個執行緒執行單個任務,則只有通過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