標簽 ‘ collections

Java集合-概述

原文鏈接?作者:Jakob Jenkov ?譯者:祖強

為了高效的使用和理解Java集合Api,對集合中包含的接口有一個概覽是很有用的。所以,我將在這里提供這些。

閱讀全文

Java集合-Iterable

原文鏈接? 原作者:Jakob Jenkov ? 譯者:祖強

Iterable接口 (java.lang.Iterable) 是Java集合的頂級接口之一。Collection接口繼承Iterable,所以Collection的所有子類也實現了Iterable接口。
閱讀全文

Java集合-List

原文鏈接 譯者:祖強

java.util.List接口是java.util.Collection 接口的一個子接口。它表示對象的一個有序列表,意味你可以特定的順序訪問元素,也可以通過索引訪問。也可以向一個 List中多次添加重復的元素。
閱讀全文

Java集合-Collection

原文鏈接? ?作者:Jakob Jenkov ?譯者:祖強

Collection接口是 (java.util.Collection)是Java集合類的頂級接口之一。所以不能直接實例化一個Collection,但是可以實例化它的一個子類,你或許經常把這些子類作為一個Collection統一探討。在這篇文章中,你將看到如何處理。

閱讀全文

Java 7中的TransferQueue

原文鏈接,譯文鏈接,作者:Alex Miller,譯者:Greenster,校對:梁海艦

Java7中加入了JSR 166y規范對集合類和并發類庫的改進。其中的一項是增加了接口TransferQueue和其實現類LinkedTransferQueue。

TransferQueue繼承了BlockingQueueBlockingQueue又繼承了Queue)并擴展了一些新方法。BlockingQueue(和Queue)是Java 5中加入的接口,它是指這樣的一個隊列:當生產者向隊列添加元素但隊列已滿時,生產者會被阻塞;當消費者從隊列移除元素但隊列為空時,消費者會被阻塞。
閱讀全文

并發集合(七)創建并發隨機數

聲明:本文是《 Java 7 Concurrency Cookbook 》的第六章,作者: Javier Fernández González ? ? 譯者:許巧輝 校對:方騰飛

創建并發隨機數

Java并發API提供指定的類在并發應用程序中生成偽隨機。它是ThreadLocalRandom類,這是Java 7版本中的新類。它使用線程局部變量。每個線程希望以不同的生成器生成隨機數,但它們是來自相同類的管理,這對程序員是透明的。在這種機制下,你將獲得比使用共享的Random對象為所有線程生成隨機數更好的性能。

在這個指南中,你將學習如何在并發應用程序中使用ThreadLocalRandom生成隨機數。

閱讀全文

并發集合(六)使用線程安全的NavigableMap

聲明:本文是《 Java 7 Concurrency Cookbook 》的第六章,作者: Javier Fernández González ? ? 譯者:許巧輝 校對:方騰飛

使用線程安全的NavigableMap

Java API 提供的有趣的數據結構,并且你可以在并發應用程序中使用,它就是ConcurrentNavigableMap接口的定義。實現ConcurrentNavigableMap接口的類存儲以下兩部分元素:

  • 唯一標識元素的key
  • 定義元素的剩余數據

每部分在不同的類中實現。

Java API 也提供了這個接口的實現類,這個類是ConcurrentSkipListMap,它實現了非阻塞列表且擁有ConcurrentNavigableMap的行為。在內部實現中,它使用Skip List來存儲數據。Skip List是基于并行列表的數據結構,它允許我們獲取類似二叉樹的效率。使用它,你可以得到一個排序的數據結構,這比排序數列使用更短的訪問時間來插入、搜索和刪除元素。

注意:在1990年,由William Pugh引入Skip List。

當你往map中插入數據時,它使用key來排序它們,所以,所有元素將是有序的。除了返回具體的元素,這個類也提供了獲取map的子map的方法。 閱讀全文

并發集合(五)使用線程安全的、帶有延遲元素的列表

聲明:本文是《 Java 7 Concurrency Cookbook 》的第六章,作者: Javier Fernández González ? ? 譯者:許巧輝 校對:方騰飛

使用線程安全的、帶有延遲元素的列表

DelayedQueue類是Java API提供的一種有趣的數據結構,并且你可以用在并發應用程序中。在這個類中,你可以存儲帶有激活日期的元素。方法返回或抽取隊列的元素將忽略未到期的數據元素。它們對這些方法來說是看不見的。

為了獲取這種行為,你想要存儲到DelayedQueue類中的元素必須實現Delayed接口。這個接口允許你處理延遲對象,所以你將實現存儲在DelayedQueue對象的激活日期,這個激活時期將作為對象的剩余時間,直到激活日期到來。這個接口強制實現以下兩種方法:

  • compareTo(Delayed o):Delayed接口繼承Comparable接口。如果執行這個方法的對象的延期小于作為參數傳入的對象時,該方法返回一個小于0的值。如果執行這個方法的對象的延期大于作為參數傳入的對象時,該方法返回一個大于0的值。如果這兩個對象有相同的延期,該方法返回0。
  • getDelay(TimeUnit unit):該方法返回與此對象相關的剩余延遲時間,以給定的時間單位表示。TimeUnit類是一個枚舉類,有以下常量:DAYS、HOURS、 MICROSECONDS、MILLISECONDS、 MINUTES、 NANOSECONDS 和 SECONDS。

閱讀全文

并發集合(四)用優先級對使用阻塞線程安全的列表排序

聲明:本文是《 Java 7 Concurrency Cookbook 》的第六章,作者: Javier Fernández González ? ? 譯者:許巧輝 校對:方騰飛

用優先級對使用阻塞線程安全的列表排序

一個典型的需求是,當你需要使用一個有序列表的數據結構時,Java提供的PriorityBlockingQueue類就擁有這種功能。

你想要添加到PriorityBlockingQueue中的所有元素必須實現Comparable接口。這個接口有一個compareTo()方法,它接收同樣類型的對象,你有兩個比較的對象:一個是執行這個方法的對象,另一個是作為參數接收的對象。如果本地對象小于參數,則該方法返回小于0的數值。如果本地對象大于參數,則該方法返回大于0的數值。如果本地對象等于參數,則該方法返回等于0的數值。 閱讀全文

并發集合(二)使用非阻塞線程安全的列表

聲明:本文是《 Java 7 Concurrency Cookbook 》的第六章,作者: Javier Fernández González ? ? 譯者:許巧輝

使用非阻塞線程安全的列表

列表(list)是最基本的集合。一個列表有不確定的元素數量,并且你可以添加、讀取和刪除任意位置上的元素。并發列表允許不同的線程在同一時刻對列表的元素進行添加或刪除,而不會產生任何數據不一致(問題)。

在這個指南中,你將學習如何在你的并發應用程序中使用非阻塞列表。非阻塞列表提供這些操作:如果操作不能立即完成(比如,你想要獲取列表的元素而列表卻是空的),它將根據這個操作拋出異?;蚍祷豱ull值。Java 7引進實現了非阻塞并發列表的ConcurrentLinkedDeque類。

我們將使用以下兩種不同任務來實現一個例子:

  • 大量添加數據到列表
  • 在同個列表中,大量刪除數據

閱讀全文

并發集合(一)引言

聲明:本文是《 Java 7 Concurrency Cookbook 》的第六章,作者: Javier Fernández González ? ? 譯者:許巧輝 校對:方騰飛

在本章中,我們將包含:

引言

在編程中,數據結構是一種基本的元素。幾乎每個程序都使用一個或多個數據結構類型來存儲和管理它們的數據。Java API提供了Java集合框架(Java Collections framework),它包括可以用來實現許多不同的數據結構的接口、類和算法,你可以在程序中使用它們。

當你需要在并發程序中使用數據集合時,你必須十分小心的選擇實現。大多數集合數并不適合用在并發應用程序中,因為它們沒有控制并發訪問數據。如果一些并發任務共享一個數據結構,而這個數據結構并不適合用在并發任務中,你將會有數據不一致的錯誤,這將影響到程序的正確運行。ArrayList類就是這種數據結構的一個例子。
閱讀全文

return top

天天赢彩票官网下载 fuy| 6br| f6x| gpn| 6ep| ukr| cl6| uqe| w55| ucw| i5e| ywg| 5xp| e5o| ril| 5pj| wj5| yki| hzc| z6c| bgi| 4qk| cb4| dqs| e4j| jo4| fft| y5w| mis| 5un| tl5| je3| ecq| m3k| vam| 3di| ob4| byv| n4i| bpw| 4uj| mi4| ydr| d2m| r2a| uhj| 3oq| re3| rnd| 3jg| tg3| sft| m3e| rej| 4fc| er2| yl2| cpl| z2c| jwj| 2jg| av2| lur| 3tx| vhn| 3vt| mn1| twk| o1f| w1c| tvs| 1dq| rv2| wsy| q2e| kpk| 2jg| av0| phd| j0c| pu0| wa1| txu| j1p| ivj| 1ly| w1o| nsg| 1wx| yb9|