Xử lý đa luồng trong Java
Hướng dẫn chi tiết cách xử lý đa luồng trong Java, bao gồm việc tạo và quản lý luồng sử dụng `Thread` và `Runnable`, đồng thời giới thiệu cách đồng bộ hóa dữ liệu giữa các luồng.
Trong bài viết này, chúng ta sẽ tìm hiểu cách xử lý đa luồng trong Java, bao gồm việc tạo luồng bằng cách sử dụng Thread
và Runnable
. Chúng ta cũng sẽ tìm hiểu cách đồng bộ hóa các luồng để tránh xung đột dữ liệu.
Mã Java:
// Tạo lớp thực thi Runnable
class MyRunnable implements Runnable {
private String threadName;
public MyRunnable(String threadName) {
this.threadName = threadName;
}
@Override
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.println(threadName + " đang chạy: " + i);
try {
Thread.sleep(1000); // Tạm dừng 1 giây
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(threadName + " hoàn thành.");
}
}
public class MultiThreadExample {
public static void main(String[] args) {
Thread thread1 = new Thread(new MyRunnable("Luồng 1"));
Thread thread2 = new Thread(new MyRunnable("Luồng 2"));
thread1.start();
thread2.start();
}
}
Giải thích chi tiết từng dòng code
-
MyRunnable
class: Lớp này triển khaiRunnable
và định nghĩa phương thứcrun
để xác định công việc mà luồng sẽ thực thi. -
run
method: In thông báo cho biết luồng đang chạy, lặp 5 lần với thời gian chờ 1 giây giữa mỗi lần lặp. -
MultiThreadExample
class: Tạo hai đối tượngThread
(thread1
vàthread2
) và khởi động chúng bằng cách gọistart()
.
Yêu cầu hệ thống:
- Java JDK 8 trở lên
Cách cài đặt Java:
Tải và cài đặt Java Development Kit (JDK) từ Oracle Java SE.
Lời khuyên:
- Tránh truy cập đồng thời vào các biến chia sẻ giữa các luồng để tránh xung đột. Sử dụng từ khóa
synchronized
nếu cần. - Sử dụng ExecutorService để quản lý một số lượng lớn các luồng hiệu quả hơn.