Nội dung chính
Làm thế nào để thực hiện task duy nhất bởi nhiều thread?
Nếu bạn phải thực hiện task duy nhất bởi nhiều thread, chỉ có một phương thức run(). Ví dụ:
Chương trình thực hiện một task bằng nhiều thread
File: TestMultitasking1.java
public 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(); } }
Output:
task one task one task one
Chương trình thực hiện một task bằng nhiều thread
File: TestMultitasking2.java
public class TestMultitasking2 implements Runnable { public void run() { System.out.println("task one"); } public static void main(String args[]) { // passing annonymous object of TestMultitasking2 class Thread t1 = new Thread(new TestMultitasking2()); Thread t2 = new Thread(new TestMultitasking2()); t1.start(); t2.start(); } }
Output:
task one task one
Chú ý: Mỗi thread chạy trong một callstack riêng biệt.
Cách thực hiện nhiều task bằng nhiều thread
Nếu bạn phải thực hiện nhiều nhiệm vụ bởi nhiều luồng, có nhiều phương thức run(). Ví dụ:
Chương trình thực hiện hai nhiệm vụ theo hai luồng
File: TestMultitasking3.java
class Simple1 extends Thread { public void run() { System.out.println("task one"); } } class Simple2 extends Thread { public void run() { System.out.println("task two"); } } public class TestMultitasking3 { public static void main(String args[]) { Simple1 t1 = new Simple1(); Simple2 t2 = new Simple2(); t1.start(); t2.start(); } }
Output:
task one task two
Ví dụ tương tự như ở trên bởi lớp nặc danh extends lớp Thread:
Chương trình thực hiện hai nhiệm vụ theo hai luồng
File: TestMultitasking4.java
public 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(); } }
Output:
task one task two
Ví dụ tương tự như ở trên bởi lớp nặc danh implements Runnable interface:
Chương trình thực hiện hai nhiệm vụ theo hai luồng
File: TestMultitasking5.java
public 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(); } }
Output:
task one task two