Tôi có câu hỏi liên quan đến lời gọi phương thức nhiều luồng trong Java. Hãy nói rằng chúng tôi có một đối tượng singleton, và các lớp học tuyên bố như sau:Đồng thời gọi phương thức Java của đối tượng đơn lẻ
public class SomeClass {
public void someMethod(SomeValueObject object) {
if (object.condition1) {
...
}
if (object.condition2) {
...
}
if (object.condition3) {
...
}
}
}
Tôi tự hỏi nếu đối tượng singleton này đang được đồng thời truy cập và someMethod của nó gọi với trường hợp SomeValueObject riêng biệt, có khả năng một số chủ đề ngẫu nhiên thay đổi tham chiếu của đối tượng cho lời gọi phương thức của một chuỗi khác và làm hỏng mọi thứ? Và những gì về các lĩnh vực được tạo ra bên trong phạm vi phương pháp? Điều tôi không biết, liệu có bất kỳ ngữ cảnh Phương thức riêng biệt nào được tạo ra cho mỗi luồng gọi phương thức hay ngữ cảnh Phương thức là giống nhau đối với tất cả các chuỗi gọi không? Nếu đây là trường hợp thứ hai, tôi đoán tôi cần từ khóa an toàn chủ đề mới hoặc sử dụng các phiên bản SomeClass riêng biệt cho mỗi chuỗi (trong trường hợp tôi cần thực thi nhanh hơn tối ưu hóa bộ nhớ). Bạn vui lòng giải thích vấn đề này cho tôi được không?
P.S. Cảm ơn tất cả những người trả lời của bạn!