Được biết, AWS lambda thể tái sử dụng đầu tạo ra các đối tượng của bộ xử lý, và nó thực sự nó (xem FAQ):AWS lambda và Java đồng thời
Q: Sẽ AWS Lambda trường hợp chức năng tái sử dụng?
Để cải thiện hiệu suất, AWS Lambda có thể chọn giữ lại phiên bản chức năng của bạn và sử dụng lại để phục vụ yêu cầu tiếp theo, thay vì tạo bản sao mới. Mã của bạn không được giả định rằng điều này sẽ luôn xảy ra .
Câu hỏi đặt ra là liên quan đến Java
đồng thời. Nếu tôi có lớp học cho xử lý, nói:
public class MyHandler {
private Foo foo;
public void handler(Map<String,String> request, Context context) {
...
}
}
như vậy, nó sẽ được thread-an toàn để tiếp cận và làm việc với đối tượng biến foo
ở đây hay không?
Nói cách khác: AWS lambda có thể sử dụng cùng một đối tượng đồng thời cho các cuộc gọi khác nhau không?
EDIT Chức năng của tôi được xử lý trên nguồn dựa trên sự kiện, cụ thể nó được gọi bằng phương pháp API Gateway.
EDIT-2 Loại câu hỏi như vậy tăng khi bạn muốn triển khai một số loại kết nối với tài nguyên bên ngoài, vì vậy tôi muốn giữ kết nối với tài nguyên bên ngoài làm biến đối tượng. Nó thực sự hoạt động như mong muốn, nhưng tôi sợ các vấn đề tương tranh.
EDIT-3 Cụ thể hơn, tôi tự hỏi: can trường hợp của bộ xử lý của AWS lambda phần đống chung (bộ nhớ) hay không? Tôi phải chỉ định chi tiết bổ sung này để ngăn chặn câu trả lời với việc liệt kê những thứ rõ ràng và phổ biến về các đối tượng an toàn thread java.
IMO "giữ lại một thể hiện của chức năng của bạn và tái sử dụng nó" là chính xác giống như "sử dụng cùng một đối tượng". Và rất có thể đồng thời. – zapl
@zapl Nó không có nghĩa chính xác đồng thời. Nó có thể được sử dụng như các chủ đề bên trong java 'ExecutorService' - chúng được giữ lại, nhưng không được sử dụng đồng thời – Andremoniy
Chắc chắn, chúng có thể tạo ra các trình xử lý mới cho mỗi luồng hoặc đảm bảo chúng không được sử dụng đồng thời nhưng tôi không thấy nó được đề cập một cách rõ ràng ở bất kỳ đâu. Mặt khác, có những phần như * "Mã phải được viết theo kiểu" không quốc tịch "[...] hiện vật có thể không mở rộng ngoài vòng đời của yêu cầu" * trong Câu hỏi thường gặp. – zapl