Tìm hiểu Thread và Thread pool trong Java phần 4

1 min read

Ở các phần trước chúng ta đã cùng nhau tìm hiểu về ThreadThreadpool cũng như cách implement chúng trong java. Ở phần này chúng ta sẽ tìm hiểu một phần quan trọng không kém trong lập trình đa luồng đó là Future.

Future và Executor

Future là một lớp trong Java đại diện cho kết quả của một tác vụ bất đồng bộ. Nó cho phép bạn truy cập kết quả của tác vụ sau khi nó hoàn thành, hoặc đợi cho đến khi nó hoàn thành.

Trong khi đó Executor là một giao diện trong Java cung cấp một cách để thực thi các tác vụ bất đồng bộ. Nó cho phép bạn gửi các tác vụ đến một nhóm luồng để thực thi và quản lý việc thực thi của chúng.

So sánh Future và Executor

Tính năngFutureExecutor
Mục đíchĐại diện cho kết quả của một tác vụ bất đồng bộThực thi các tác vụ bất đồng bộ
LoạiLớpGiao diện
Khả năng truy cập kết quảCho phép truy cập kết quả sau khi hoàn thànhKhông cung cấp khả năng truy cập kết quả
Quản lý luồngKhông quản lý luồngQuản lý luồng thông qua nhóm luồng
Sử dụngPhù hợp cho các tác vụ cần truy cập kết quảPhù hợp cho các tác vụ không cần truy cập kết quả
So sánh Future và Executor
Future vs Executor

Ví dụ trong java

Future

Future<String> future = executorService.submit(() -> {
    return "Hello, world!";
});

String result = future.get();

System.out.println(result); // "Hello, world!"

Executor

executorService.execute(() -> {
    System.out.println("Hello, world!");
});

Kết luận

  • Future và Executor là hai công cụ quan trọng để làm việc với lập trình đa luồng trong Java.
  • Future cho phép bạn truy cập kết quả của một tác vụ bất đồng bộ, trong khi Executor cho phép bạn thực thi các tác vụ bất đồng bộ và quản lý việc thực thi của chúng.
  • Lựa chọn sử dụng Future hay Executor phụ thuộc vào nhu cầu cụ thể của bạn.

Reference:

https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html

https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executor.html

Callable and Future in Java – Javatpoint

Avatar photo

One Reply to “Tìm hiểu Thread và Thread pool trong Java phần 4”

Leave a Reply

Your email address will not be published. Required fields are marked *