Trong java.util.function
gó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
( Executor
ví dụ).
Runnable
s chỉ có thể .run()
bằng Thread
s. 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.