Time of Update: 2017-02-27
1. sleep()介紹sleep() 定義在Thread.java中。sleep() 的作用是讓當前線程休眠,即當前線程會從“運行 狀態”進入到“休眠(阻塞)狀態”。sleep()會指定休眠時間,線程休眠的時間會大於/ 等於該休眠時間;線上程重新被喚醒時,它會由“阻塞狀態”變成“就緒狀態”, 從而等待cpu的調度執行。2. sleep()樣本下面通過一個簡單樣本示範sleep()的用法。//
Time of Update: 2017-02-27
1. yield()介紹yield()的作用是讓步。它能讓當前線程由“運行狀態”進入到“就緒狀態”,從而讓其它具有相同優先順序的等待線程擷取執行權;但是,並不能保證在當前線程調用yield()之後,其它具有相同優先順序的線程就一定能獲得執行權;也有可能是當前線程又進入到“運行狀態”繼續運行!2. yield()樣本下面,通過樣本查看它的用法。// YieldTest.java的源碼class ThreadA extends
Time of Update: 2017-02-27
wait(), notify(), notifyAll()等方法介紹在Object.java中,定義了wait(), notify()和notifyAll()等介面。wait()的作用是讓當前線程進入 等待狀態,同時,wait()也會讓當前線程釋放它所持有的鎖。而notify()和notifyAll()的作用,則是喚 醒當前對象上的等待線程;notify()是喚醒單個線程,而notifyAll()是喚醒所有的線程。Object類中關於等待/喚醒的API詳細資料如下:notify()
Time of Update: 2017-02-27
1. synchronized原理在java中,每一個對象有且僅有一個同步鎖。這也意味著,同步鎖是依賴於對象而存在。當我們調用某對象的synchronized方法時,就擷取了該對象的同步鎖。例如,synchronized(obj)就獲 取了“obj這個對象”的同步鎖。不同線程對同步鎖的訪問是互斥的。也就是說,某時間點,對象的同步鎖只能被一個線程擷取到!通 過同步鎖,我們就能在多線程中,實現對“對象/方法”的互斥訪問。 例如,現在有兩個線程
Time of Update: 2017-02-27
概要Thread類包含start()和run()方法,它們的區別是什嗎?本章將對此作出解答。本章內容包括:start() 和 run()的區別說明start() 和 run()的區別樣本start() 和 run()相關源碼(基於 JDK1.7.0_40)轉載請註明出處:http://www.cnblogs.com/skywang12345/p/3479083.htmlstart() 和 run()的區別說明start() :
Time of Update: 2017-02-27
本章,我們學習“常用的實現多線程的2種方式”:Thread 和
Time of Update: 2017-02-27
多線程是Java中不可避免的一個重要主體。從本章開始,我們將展開對多線程的學習。接下來的內容 ,是對“JDK中新增JUC包”之前的Java多線程內容的講解,涉及到的內容包括,Object類中的 wait(), notify()等介面;Thread類中的介面;synchronized關鍵字。註:JUC包是指,Java.util.concurrent包,它是由Java大師Doug Lea完成並在JDK1.5版本添加到
Time of Update: 2017-02-27
AtomicLongFieldUpdater介紹和函數列表AtomicLongFieldUpdater可以對指定"類的 'volatile long'類型的成員"進行原子更新。 它是基於反射原理實現的。AtomicLongFieldUpdater函數列表// 受保護的無操作構造方法,供子類使用。protected AtomicLongFieldUpdater() // 以原子方式將給定值添加到此更新器管理的給定對象的欄位的當前值。long addAndGet(T
Time of Update: 2017-02-27
AtomicReference介紹和函數列表AtomicReference是作用是對"對象"進行原子操作。AtomicReference函數列表// 使用 null 初始值建立新的 AtomicReference。AtomicReference()// 使用給定的初始值建立新的 AtomicReference。AtomicReference(V initialValue) // 如果當前值 == 預期值,則以原子方式將該值設定為給定的更新值。boolean
Time of Update: 2017-02-27
AtomicLongArray介紹和函數列表在"Java多線程系列--“JUC原子類”02之 AtomicLong原子類"中介紹過, AtomicLong是作用是對長整形進行原子操作。而AtomicLongArray的作用則是對"長整形數組" 進行原子操作。AtomicLongArray函數列表// 建立給定長度的新 AtomicLongArray。AtomicLongArray(int length)//
Time of Update: 2017-02-27
我相信很多人跟我一樣還未學習過範型的概念就開始使用範型的執行個體,最典型的就是集合架構。為了 進一步深入瞭解範型,這一次通過幾個簡單的例子來說明範型的注意事項。一.沒有範型的世界所有的java類都派生自java.lang.Object ,這意味著所有的java對象都可以轉換成Object,聽起來似乎 很美妙,但事實並非如此。舉個例子,假設現在需要一伙人去排隊,要求只有學生可以參與進來,但是如 果對於這個隊伍沒有條件限定的話,那就意味著我們不想要的一些群體也會進入大軍之中,這不利於管理
Time of Update: 2017-02-27
這個故事源自一個很簡單的想法:建立一個對開發人員友好的、簡單輕量的線程間通訊架構,完全不 用鎖、同步器、訊號量、等待和通知,在Java裡開發一個輕量、無鎖的線程內通訊架構;並且也沒有隊列 、訊息、事件或任何其他並發專用的術語或工具。只用普通的老式Java介面實現POJO的通訊。它可能跟Akka的類型化actor類似,但作為一個必須超級輕量,並且要針對單台多核電腦進行最佳化的
Time of Update: 2017-02-27
前面,我們已經系統的對List進行了學習。接下來,我們先學習Map,再學習Set;因為Set的實作類別都是基於Map來實現的(如,HashSet是通過HashMap實現的,TreeSet是通過TreeMap實現的)。首先,我們看看Map架構。如上圖:Map 是映射介面,Map中儲存的內容是索引值對(key-value)。AbstractMap 是繼承於Map的抽象類別,它實現了Map中的大部分API。其它Map的實作類別可以通過繼承AbstractMap來減少重複編碼。SortedMap
Time of Update: 2017-02-27
List總結(LinkedList, ArrayList等使用情境和效能分析前面,我們學完了List的全部內容(ArrayList, LinkedList, Vector, Stack)。Java 集合系列03之 ArrayList詳細介紹(源碼解析)和使用樣本Java 集合系列04之 fail-fast總結(通過ArrayList來說明fail-fast的原理、解決辦法)Java 集合系列05之 LinkedList詳細介紹(源碼解析)和使用樣本Java 集合系列06之 Vector詳細介紹(
Time of Update: 2017-02-27
學完Vector了之後,接下來我們開始學習Stack。Stack很簡單,它繼承於Vector。學習方式還是和之前一樣,先對Stack有個整體認識,然後再學習它的源碼;最後再通過執行個體來學會使用它。第1部分 Stack介紹Stack簡介Stack是棧。它的特性是:先進後出(FILO, First In Last
Time of Update: 2017-02-27
學完ArrayList和LinkedList之後,我們接著學習Vector。學習方式還是和之前一樣,先對Vector有個整體認識,然後再學習它的源碼;最後再通過執行個體來學會使用它。第1部分 Vector介紹Vector簡介Vector 是向量隊列,它是JDK1.0版本添加的類。繼承於AbstractList,實現了List, RandomAccess, Cloneable這些介面。Vector
Time of Update: 2017-02-27
前面,我們已經學習了ArrayList,並瞭解了fail-fast機制。這一章我們接著學習List的實作類別——LinkedList。和學習ArrayList一樣,接下來呢,我們先對LinkedList有個整體認識,然後再學習它的源碼;最後再通過執行個體來學會使用LinkedList。第1部分 LinkedList介紹LinkedList簡介LinkedList
Time of Update: 2017-02-27
fail-fast總結(通過ArrayList來說明fail-fast的原理、解決辦法)前面,我們已經學習了ArrayList。接下來,我們以ArrayList為例,對Iterator的fail-fast機制進行瞭解。1 fail-fast簡介fail-fast
Time of Update: 2017-02-27
上一章,我們學習了Collection的架構。這一章開始,我們對Collection的具體實作類別進行講解;首先,講解List,而List中ArrayList又最為常用。因此,本章我們講解ArrayList。先對ArrayList有個整體認識,再學習它的源碼,最後再通過例子來學習如何使用它。第1部分 ArrayList介紹ArrayList介紹ArrayList 是一個數組隊列,相當於 動態數組。與Java中的數組相比,它的容量能動態增長。它繼承於AbstractList,實現了List,
Time of Update: 2017-02-27
首先,我們對Collection進行說明。下面先看看Collection的一些架構類的關係圖:Collection是一個介面,它主要的兩個分支是:List 和