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