Java面試題-並發架構

來源:互聯網
上載者:User

標籤:

1. SynchronizedMap和ConcurrentHashMap有什麼區別?       

答:java5中新增了ConcurrentMap介面和它的一個實作類別ConcurrentHashMap。ConcurrentHashMap提供了和Hashtable以及SynchronizedMap中所不同的鎖機制。比起synchronizedMap來,它提供了好得多的並發性。多個讀操作幾乎總可以並發地執行,同時進行的讀和寫操作通常也能並發地執行,而同時進行的寫操作仍然可以不時地並發進行(相關的類也提供了類似的多個讀線程的並發性,但是,只允許有一個活動的寫線程)。Hashtable中採用的鎖機制是一次鎖住整個hash表,從而同一時刻只能由一個線程對其進行操作;而ConcurrentHashMap中則是一次鎖住一個桶。ConcurrentHashMap預設將hash表分為16個桶,諸如get,put,remove等常用操作只鎖當前需要用到的桶。這樣,原來只能一個線程進入,現在卻能同時有16個寫線程執行,並發效能的提升是顯而易見的。前面說到的16個線程指的是寫線程,而讀操作大部分時候都不需要用到鎖。只有在size等操作時才需要鎖住整個hash表。       在迭代方面,ConcurrentHashMap使用了一種不同的迭代方式。在這種迭代方式中,當iterator被建立後集合再發生改變就不再是拋出ConcurrentModificationException,取而代之的是在改變時new新的資料從而不影響原有的資料 ,iterator完成後再將頭指標替換為新的資料 ,這樣iterator線程可以使用原來老的資料,而寫線程也可以並發的完成改變。

2. CopyOnWriteArrayList可以用於什麼應用情境?
        答:CopyOnWriteArrayList(免鎖容器)的好處之一是當多個迭代器同時遍曆和修改這個列表時,不會拋出ConcurrentModificationException。在CopyOnWriteArrayList中,寫入將導致建立整個底層數組的副本,而源數組將保留在原地,使得複製的數組在被修改時,讀取操作可以安全地執行。

Java面試題-並發架構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.