Sử dụng Future trong Java

Hướng dẫn sử dụng Future trong Java

Bài viết này sẽ giúp bạn hiểu cách sử dụng `Future` trong Java để xử lý các tác vụ đồng thời. Giao diện `Future` đại diện cho kết quả của một phép tính bất đồng bộ.

Các bước thực hiện

Bước Mô tả
1 Tạo một lớp triển khai giao diện `Callable`.
2 Triển khai phương thức `call` của `Callable`.
3 Sử dụng `ExecutorService` để gửi nhiệm vụ `Callable`.
4 Gọi phương thức `get` của `Future` để lấy kết quả.

Mã nguồn minh họa

Bước 1: Tạo lớp Callable

Tạo một lớp triển khai giao diện `Callable`. Lớp này sẽ chứa logic xử lý và trả về kết quả:


import java.util.concurrent.Callable;

public class TaskProcessor implements Callable<Integer> {
    private final int inputNumber;

    public TaskProcessor(int inputNumber) {
        this.inputNumber = inputNumber;
    }

    @Override
    public Integer call() throws Exception {
        Thread.sleep(2000); // Giả lập hoạt động tốn thời gian
        return inputNumber * 3; // Nhân giá trị đầu vào với 3
    }
}
Bước 2: Sử dụng ExecutorService để gửi nhiệm vụ

Tiếp theo, sử dụng `ExecutorService` để gửi nhiệm vụ `Callable` đã tạo:


import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class FutureDemo {
    public static void main(String[] args) {
        ExecutorService executor = Executors.newFixedThreadPool(2);
        Future<Integer> futureResult = executor.submit(new TaskProcessor(5));
        executor.shutdown();
    }
}
Bước 3: Lấy kết quả từ Future

Sau khi nhiệm vụ được gửi, có thể lấy kết quả bằng cách gọi phương thức `get` của đối tượng `Future`:


try {
    Integer resultValue = futureResult.get();
    System.out.println("Kết quả: " + resultValue);
} catch (Exception e) {
    System.err.println("Lỗi khi lấy kết quả: " + e.getMessage());
}

Với các bước trên, bạn đã có thể sử dụng `Future` trong Java để xử lý các tác vụ đồng thời một cách hiệu quả.

Thẻ: Java Concurrency ExecutorService

Đăng vào ngày 12 tháng 6 lúc 16:48