Ở các phần trước chúng ta đã cùng nhau tìm hiểu về Thread và Threadpool 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ăng | Future | Executor |
---|---|---|
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ại | Lớp | Giao 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ành | Không cung cấp khả năng truy cập kết quả |
Quản lý luồng | Không quản lý luồng | Quản lý luồng thông qua nhóm luồng |
Sử dụng | Phù 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ả |
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
One Reply to “Tìm hiểu Thread và Thread pool trong Java phần 4”