Sau đây là người đọc và nhà văn mẫu điển hình (rất nhiều lần đọc và vài viết)Java: ReentrantReadWriteLock với ưu tiên
private ReadWriteLock lock = new ReentrantReadWriteLock();
private int value;
public void writeValue(int newValue){
lock.writeLock().lock();
try{
this.value = newValue;
}
finally{
lock.writeLock().unlock();
}
}
public int readValue(){
lock.readLock().lock();
try{
return value;
}
finally{
lock.writeLock().unlock();
}
}
tôi tự hỏi rằng là nó có thể được ưu tiên để viết và người đọc? Ví dụ, người viết bình thường có thể chờ đợi một thời gian rất dài (có thể mãi mãi) nếu có các khóa đọc liên tục được giữ bởi chủ đề khác, vì vậy có thể có nhà văn có mức độ ưu tiên cao hơn, vì vậy bất cứ khi nào một nhà văn đến, nó có thể được coi là ưu tiên cao (bỏ qua dòng) một cái gì đó như thế.
Bạn có nghĩ rằng việc thu thập đồng thời bổ sung khác là cần thiết vào thời điểm này không? như BlockingQueue? hoặc đồng thời PriortyQueue một cái gì đó như thế? – peter
@ user1389813 - là nămo đặt hàng không phải là một đảm bảo đủ mạnh cho nhu cầu của bạn? xem xét rằng các độc giả (trong ví dụ của bạn) chỉ đọc một giá trị đơn giản, tôi không thể tưởng tượng rằng một nhà văn sẽ bị chặn tất cả những gì chờ đợi lâu cho độc giả hiện tại (có thể tiến hành đồng thời). – jtahlborn
vì vậy đề xuất của bạn là gì? – peter