cache的改造過程

2021-09-01 16:26:00 字數 1277 閱讀 7687

乙個cache的改造過程

在分布式的程式中,cache的合理使用可以帶來效能上的極大提公升,尤其是在資源建立需要昂貴的開銷時。cache的設計最重要的是要保證執行緒安全和高效性。下面以**為例,介紹了三種cache的寫法。

1. 粗放的加鎖

public class cache1 public synchronized servergroup get(string routekey) throws ioexception return sg; } public synchronized void remove(string routekey) private servergroup getservergroup(string routekey) throws ioexception }

2. 讀寫鎖

public class cache2 public servergroup get(string routekey) throws ioexception lock.readlock().lock(); lock.writelock().unlock(); } } catch (ioexception e) lock.readlock().unlock(); return sg; } public void remove(string routekey) finally } private servergroup getservergroup(string routekey) throws ioexception }

3. 無鎖

public class cache3 public servergroup get(string routekey) throws ioexception, interruptedexception, executionexception futuretasksft = new futuretask(new constructsgtask(routekey)); futuretaskold = route2sgft.putifabsent(routekey, sft); if (old == null) return old.get(); } public void remove(string routekey) class constructsgtask implements callable @override public servergroup call() throws exception } private servergroup getservergroup(string routekey) throws ioexception }

總結,從三份**中可以看出,鎖的粒度從粗放到無,這個就極大的提高了cache的併發性。

乙個cache的改造過程

在分布式的程式中,cache的合理使用可以帶來效能上的極大提公升,尤其是在資源建立需要昂貴的開銷時。cache的設計最重要的是要保證執行緒安全和高效性。下面以 為例,介紹了三種cache的寫法。1.粗放的加鎖 code public class cache1 public synchronized ...

乙個cache的改造過程

在分布式的程式中,cache的合理使用可以帶來效能上的極大提公升,尤其是在資源建立需要昂貴的開銷時。cache的設計最重要的是要保證執行緒安全和高效性。下面以 為例,介紹了三種cache的寫法。1.粗放的加鎖 public class cache1 public synchronized serve...

cache工作的詳細過程

首先cpu會發出取址的位址,這個位址分為兩部分,高位為主存塊號,低位為塊內位址,接下來要拿主存塊號去cache表中查詢,以便知道這個主存塊號在不在cache中,所以要進行一番判斷,要麼命中,要麼未命中,如果命中就往下走,從cache表中把主存塊號對應的cache塊號找到,然後把cache塊號與剛才主...