Trong java.util.functiongói Java 8 , chúng tôi có:
- Hàm : Đưa ra một đối số, tạo ra một kết quả.
- Người tiêu dùng : Đưa ra một lập luận, không tạo ra gì.
- Nhà cung cấp : Không có đối số, tạo ra một kết quả.
- ... : Các trường hợp khác xử lý nguyên thủy, 2 đối số, v.v ...
Nhưng tôi cần xử lý trường hợp " không tranh luận, không tạo ra gì ".
Không có gì cho điều này trong java.util.functionnal.
Vì vậy, câu hỏi là:
Tên của ' một hàm không có đối số và không trả về gì ' là gì?
Trong Java 8, định nghĩa của nó sẽ là:
@FunctionalInterface
public interface InsertANameHere {
void execute();
}
Executor đã tồn tại và có một mục đích khác: " Một đối tượng thực thi các nhiệm vụ Runnable đã gửi ". Chữ ký không khớp ( execute(Runnable):void) và thậm chí không phải là giao diện chức năng .
Runnable tồn tại, nhưng nó được liên kết chặt chẽ với bối cảnh luồng:
- Các gói là
java.lang, khôngjava.util.function. - Javadoc tuyên bố: " Giao diện Runnable nên được thực hiện bởi bất kỳ lớp nào có phiên bản được dự định thực hiện bởi một luồng ".
- Tên "Runnable" gợi ý một số mã đang chạy bên trong một luồng.
Runnableđã lỗi thời tại thời điểm này, bởi vì Runnable cũng được sử dụng bởi các lớp khác ngoài Thread( Executorví dụ).
Runnables chỉ có thể .run()bằng Threads. Trên thực tế, chúng rất được sử dụng cho mục đích chính xác được mô tả trong câu hỏi
java.util.function gói.