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