Java: Định Nghĩa Và Khởi Tạo Thread | V1Study

Mỗi ứng dụng tạo ra một thể hiện của Thread sẽ phải cung cấp mã lệnh để chạy trong luồng đó. Có hai cách để làm điều này:

  • Cung cấp một đối tượng Runnable. Interface Runnable định nghĩa một phương thức duy nhất là phương thức run(), nó chứa mã thực thi luồng. Đối tượng Runnable được truyền tới hàm tạo Thread, như trong ví dụ HelloRunnable dưới đây:
public class HelloRunnable implements Runnable { public void run() { System.out.println("Hello from a thread!"); } public static void main(String args[]) { (new Thread(new HelloRunnable())).start(); } }
  • Lớp con Thread. Lớp Thread bản thân nó thực thi Runnable mặc dù phương thức run() của nó không làm gì. Một ứng dụng có thể phân lớp Thread, cung cấp sự thực thi phương thức run() của riêng nó, như trong ví dụ sau:
public class HelloThread extends Thread { public void run() { System.out.println("Hello from a thread!"); } public static void main(String args[]) { (new HelloThread()).start(); } }

Chú ý rằng cả hai ví dụ trên đều gọi phương thức Thread.start để tạo một luồng mới.

Vậy bạn nên sử dụng cách nào? Đối với cách thứ nhất, đối tượng Runnable mang tính tổng quát hơn, Runnable có thể phân lớp thành một lớp khác so với Thread. Nhưng cách thứ hai lại dễ dàng sử dụng hơn trong các ứng dụng đơn giản, nhưng bị hạn chế bởi thực tế là lớp tác vụ của bạn phải là một lớp con của Thread. Bài những bài viết trong phần này tập trung vào phương pháp tiếp cận đầu tiên, tách tác vụ Runnable khỏi đối tượng Thread, bởi vì phương pháp này linh hoạt hơn, nó còn được áp dụng cho các API quản lý luồng cấp cao sau này.

Lớp Threadlớp định nghĩa một số phương thức hữu ích cho việc quản lý luồng. Chúng bao gồm các phương thức static, cung cấp thông tin về hoặc ảnh hưởng đến trạng thái của luồng gọi phương thức. Các phương thức khác nhau được gọi từ các luồng khác nhau liên quan đến việc quản lý luồng và đối tượng Thread. Ta sẽ xem xét một số phương thức này trong các phần sau.

Từ khóa » Các Cách Tạo Thread Trong Java