讀<設計模式之Proxy(代理)>後有兩個疑問。
1、原文中有一段對copy-on-write操作的context的描述如下:
比如:我們有一個很大的Collection,具體如hashtable,有很多客戶端會併發同時訪問它.其中一個特別的客戶端要進行連續的資料獲取,此時要求其他客戶端不能再向hashtable中增加或刪除 東東.
最直接的解決方案是:使用collection的lock,讓這特別的客戶端獲得這個lock,進行連續的資料獲取,然後再釋放lock.
public void foFetches(Hashtable ht){
synchronized(ht){
//具體的連續資料獲取動作..
}
}
但是這一辦法可能鎖住Collection會很長時間,這段時間,其他客戶端就不能訪問該Collection了.
HashTable本身不就是同步保證了嗎?應該不存在還需要進行lock操作吧
2、最後解決辦法中說:
這個特別的客戶端先透過呼叫一個叫clone的方法來進行一系列資料獲取操作.但實際上沒有真正的進行物件複製,直至有其他客戶端修改了這個物件Collection
如何實現直到別的客戶更改了這個物件時才進行clone呢? 能給個例子嗎?
Thanks!
相關文章
- 設計模式之代理模式(proxy pattern)設計模式
- C++設計模式之Proxy模式(代理模式)C++設計模式
- 設計模式系列之代理模式(Proxy Pattern)——物件的間接訪問設計模式物件
- C#設計模式——代理模式(Proxy Pattern)C#設計模式
- 說透設計模式-代理模式與Proxy設計模式
- java23中設計模式–代理模式ProxyJava設計模式
- java23中設計模式--代理模式ProxyJava設計模式
- Head First 設計模式 —— 13. 代理 (Proxy) 模式設計模式
- 設計模式之代理模式設計模式
- 《設計模式》之代理模式設計模式
- 設計模式之代理設計模式
- 代理模式(Proxy)模式
- Javascript設計模式之代理模式JavaScript設計模式
- Java設計模式之代理模式Java設計模式
- 代理模式(Proxy Pattern)模式
- 設計模式漫談之代理模式設計模式
- C++設計模式之代理模式C++設計模式
- Java設計模式之(五)——代理模式Java設計模式
- 23天設計模式之代理模式設計模式
- 23種設計模式之代理模式(靜態代理)設計模式
- 設計模式之代理模式(結構型)設計模式
- 12.java設計模式之代理模式Java設計模式
- JavaScript設計模式經典之代理模式JavaScript設計模式
- 每天一個設計模式·代理模式設計模式
- javascript設計模式 之 3代理模式JavaScript設計模式
- 跟著GPT學設計模式之代理模式GPT設計模式
- 23種設計模式之——動態代理模式設計模式
- 設計模式之觀察和代理設計模式
- 設計模式之cglib動態代理設計模式CGLib
- 做學問要在不疑之處有疑
- Java代理設計模式(Proxy)的四種具體實現:靜態代理和動態代理Java設計模式
- 設計模式-代理模式設計模式
- 設計模式----代理模式設計模式
- 設計模式~代理模式設計模式
- 【設計模式】代理模式設計模式
- 設計模式——代理模式設計模式
- 面試常問的設計模式之代理模式的詳細解析!分析說明靜態代理模式和動態代理模式面試設計模式
- Java設計模式之七 —– 享元模式和代理模式Java設計模式
- http代理ip有哪兩種模式HTTP模式