vì vậy tôi muốn có một danh sách chuỗi lưu trữ một loạt các trích dẫn chứng khoán. nhưng tôi theo dõi giá dự thầu, hỏi giá và giá cuối cùng cho mỗi giá.đồng bộ hóa số lần đọc vào bộ sưu tập java
tất nhiên bất kỳ lúc nào, yêu cầu giá thầu hoặc cuối cùng của một cổ phiếu nhất định có thể thay đổi.
tôi có một chuỗi cập nhật giá và một chủ đề đọc chúng.
tôi muốn đảm bảo rằng khi đọc không có chủ đề nào khác đang cập nhật giá. vì vậy tôi đã xem bộ sưu tập được đồng bộ hóa. nhưng điều đó dường như chỉ ngăn chặn việc đọc trong khi một luồng khác đang thêm hoặc xóa một mục nhập vào danh sách mảng.
vì vậy bây giờ tôi vào cách tiếp cận wrapper:
public class Qte_List {
private final ArrayList<Qte> the_list;
public void UpdateBid(String p_sym, double p_bid){
synchronized (the_list){
Qte q = Qte.FindBySym(the_list, p_sym);
q.bid=p_bid;}
}
public double ReadBid(String p_sym){
synchronized (the_list){
Qte q = Qte.FindBySym(the_list, p_sym);
return q.bid;}
}
vì vậy những gì tôi muốn đạt được với điều này là chỉ có một thread có thể được thực hiện bất cứ điều gì - đọc hoặc cập nhật nội dung của một the_list - cùng một lúc. tôi đang tiếp cận quyền này?
cảm ơn.
Bạn đang cố gắng ngăn việc ghi vào đối tượng Trích dẫn xảy ra cùng lúc với một lần đọc không? Nếu vậy, khóa bộ sưu tập sẽ không thực hiện được điều này. Xem câu trả lời của tôi. – DJClayworth