多執行緒與併發學習記錄
1:執行緒的方式
Extends Thread
Implements Runnable
2:這2中方式的區別
Runnable 更加能體現面向物件的思想 即
宣告執行緒是一部分 執行緒的實現是一部分
3:定時器的應用
3.1:timer類
3.2:timertask類
//是指3秒後執行的程式碼
-----------------若將時間改為 結果為:
3.3:子母類 就是裡面有包括一個
3.4:幾號幾點幹什麼專業工具
Quartz
4:執行緒的互斥和同步
4.1:多執行緒互斥(重要解決方法是找到同一個鎖)
這是一個完整的程式碼,但是會出現多執行緒互斥的問題 即
解決方法有2中,一個是錯誤的 一個是對的
錯誤的解決方法
用name 作為鎖,之所以是錯誤的,是因為這個鎖子必須是公用程式碼塊特有的部分,在這裡2個方法都用了 這個方法,即name有2個值 ,那麼就有了2個鎖子 ,所以是不會同步的 ,是錯誤的
對的方法
或者
或者
都進過xx 是一個值 所以是對的 同步的鎖一定要是同一個物件
注意:
它的作用相當於
Static 是記憶體為鎖 所以需要位元組碼去匹配
4.2:通訊
執行邏輯就是:
i=1時執行子執行緒,執行2次後,bShouldSub=true,且喚醒主執行緒,主執行緒執行i=2時的情況 ,以此類推。
5:ThreadLocal實現執行緒範圍的共享變數
6:java5後新增的類(執行緒併發庫)
java.util.concurrent.
7:執行緒池
結論:根據結論可以得出,雖然大範圍是要迴圈6次,但是隻有3個執行緒在輪流執行,是因為執行緒池中只放了3個執行緒
記:若是
這樣什麼的 這個是動態啊的建立執行緒池,即 最大範圍的迴圈了6次,他就動態的建立了6和執行緒
7.0:獲取動態非同步處理後的結果
此類適用於Executors下面的類的凡是返回非同步結果的方法
7.1 :執行緒死後怎麼自動建立新執行緒
Executors.newSingleThreadExecutor();是建立單個執行緒,但是他死後會在需要的時候使用提供的 ThreadFactory 建立新執行緒。
7.2:用執行緒池啟動定時器
記:若是想在幾天後的什麼時候啟動定時器,則第二個引數可以設定為
7.3:獲取執行緒返回的結果
Future的屬性
7.4:將執行緒中完成的任務動態隨時的提取出來CompletionService
結果就是每當執行一次上面的迴圈,則下面就會把這個結果打印出來
8:執行緒池鎖
8.1:鎖的比較 Lock
8.2:鎖的喚醒,等待的比較 Condition
8.3: 鎖的缺點
由於lock是作用於一個物件上賣的,所有有很大的侷限性,比如讀寫操作,10個人讀,10個人寫,若用Loak 則只會讓 1 先讀完再寫,而不是整體讀完再去寫,沒有實現非同步 ,所以便有了他的實現類 writetrantlock 讀寫鎖,用於非同步的讀寫 就是10個人整體讀完後再去寫。速度會快10倍不止
8.4:讀寫鎖的使用
在讀的操作的程式碼上寫讀鎖
在寫的操作的程式碼上寫寫鎖
相關推薦
多執行緒與併發學習記錄
1:執行緒的方式 Extends ThreadImplements Runnable2:這2中方式的區別Runnable 更加能體現面向物件的思想 即 宣告執行緒是一部分 執行緒的實現是一部分3:定時器的應用3.1:timer類3.2:timertask類 //是指3
JAVA多執行緒與併發學習總結
一、 什麼是併發 在作業系統中,是指一個時間段中有幾個程式都處於已啟動執行到執行完畢之間,且這幾個程式都是在同一個處理機上執行,但任一個時刻點上只有一個程式在處理機上執行。 這裡需要注意併發和並行是不同的兩個概念。併發是指一個時間段內同時執行,這是個區間;而並行是指在同
共同學習Java原始碼-多執行緒與併發-ConcurrentHashMap(一)
ConcurrentHashMap是每個Java學習者必看的類 public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V&
多執行緒基礎7 多執行緒與併發庫
多執行緒與併發庫 BlockingQueue佇列 BlockingQueue,如果BlockQueue是空的,從BlockingQueue取東西的操作將會被阻斷進入等待狀態,直到BlockingQueue進了東西才會被喚醒.同樣,如果BlockingQueue是滿的,任何試圖往裡存東西的操作
多執行緒與併發程式設計
前言 多執行緒併發程式設計是Java程式設計中重要的一塊內容,也是面試重點覆蓋區域,所以學好多執行緒併發程式設計對我們來說極其重要,下面跟我一起開啟本次的學習之旅吧。 正文 執行緒與程序 1 執行緒:程序中負責程式執行的執行單元執行緒本身依靠程
更多免費初級中級高階大資料java視訊教程下載 加(微***信((號keepper,請備註java或掃下面2二3維4碼Java多執行緒與併發庫高階應用視訊教程下載
更多免費初級中級高階大資料java視訊教程下載 加(微***信((號keepper,請備註java或掃下面2二3維4碼Java多執行緒與併發庫高階應用視訊教程下載java視訊教程01_傳智播客_張孝祥_傳統執行緒技術回顧.rarjava視訊教程02_傳智播客_張孝祥_傳統定時器技術回顧.rarjava視訊教程
Java多執行緒與併發(三)
Condition等待和喚醒 在我們的並行程式中,避免不了某些寫成要預先規定好的順序執行,例如:先新增後修改,先買後賣,先進後出,對於這些場景,使用JUC的Conditon物件再合適不過了。 JUC中提供了Condition物件,用於讓指定執行緒等待與喚
Java多執行緒與併發(二)
Synchronized執行緒同步機制 很多執行緒同時對同一個資料或者檔案進行訪問的時候,對於這個檔案如果進行併發讀寫可能會產生問題。 多執行緒機制來保證同一個時間,只有一個執行緒對這個資源進行讀寫,來保證多執行緒環境下是健壯的。 程式碼案例:
Java多執行緒與併發(一)
多執行緒與併發的基礎問題 併發就是指程式同時處理多個任務的能力(一個程式被多個使用者訪問都能看到自己預期的結果) 併發的根源在於對多工情況下訪問資源的有效控制! 併發背後的問題 public class DownloadSimple {
java面試:多執行緒與併發
關鍵詞 多執行緒,併發,執行緒池 多執行緒 Q:如何新建一個執行緒? 繼承Thread,或者實現Runnable介面,或者通過Callable介面實現 Q:執行緒池有沒有了解過?為什麼要用執行緒池? 新建執行緒的開銷太大了,使用執行緒池可以節省系統資源。 Q:執行緒池的引數有哪些? 引數如下:
02-理解多執行緒與併發之間的聯絡與區別
多執行緒和併發之間到底有什麼關聯呢?它們之間又有哪些差異呢?我們本節課就來探討一下。 首先說一下什麼是多執行緒,其實之前已經給大家講了一個非常簡單的例子了 假如這是我們的一個應用,假如我們在這裡面寫程式碼 我們知道,程式是一行一行的往下執行的,在Java虛擬機器執行時記憶體區
Java多執行緒與併發庫高階應用之倒計時計數器CountDownLatch
CountDownLatch類是一個倒計時計數器,在完成一組正在其他執行緒中執行的操作之前,它允許一個或多個執行緒一直等待。用給定的計數初始化 CountDownLatch。由於呼叫了countDown() 方法,所以在當前計數到達零之前,await 方法會一直受阻塞。之後,
多執行緒與併發----阻塞佇列的應用
一、佇列 1、佇列分為固定長度的佇列和不固定長度的佇列; 2、固定長度的佇列,若放滿了還要放,阻塞式佇列就會等待,直到有資料取出,空出位置後才繼續放; 3、固定長度的佇列,若放滿了還要
深入理解多執行緒與併發程式設計
一、多執行緒三大特性 1、原子性:一個操作或者多個操作要麼全部執行,要麼都不執行。 2、可見性:當多個執行緒訪問同一個變數時,一個執行緒修改了這個變數的值,其他執行緒能夠立即看到修改的值。 3、有序性:程式執行的順序是按照程式碼的先後順序執行的,在單執行緒
【Java多執行緒與併發庫】3.傳統執行緒互斥技術
執行緒的同步互斥與通訊 互斥的問題在使用執行緒的時候是我們必須要注意的。 例如兩個執行緒同時開啟,由於業務規則,需要訪問同一個物件,要取得該物件 中的資料進行修改。 這樣多個執行緒對同一個資料進行操作的例項有很多,例如銀行交易。我們的賬戶中原來 有2000元,在同一時間,我
java多執行緒與併發程式設計詳解
一、多執行緒1、作業系統有兩個容易混淆的概念,程序和執行緒。程序:一個計算機程式的執行例項,包含了需要執行的指令;有自己的獨立地址空間,包含程式內容和資料;不同程序的地址空間是互相隔離的;程序擁有各種資源和狀態資訊,包括開啟的檔案、子程序和訊號處理。執行緒:表示程式的執行流程
多執行緒與併發----執行緒範圍內共享變數
執行緒範圍內共享資料圖解:mport java.util.HashMap; import java.util.Map; import java.util.Random; public class Th
Java多執行緒與併發應用-(6)-多個執行緒之間共享物件和資料的方式
此內容來自張孝祥老師的java多執行緒與併發庫高階應用 如果多個執行緒執行的程式碼相同,可以使用同一個Runnable物件,這個Runnable物件中有那個共享資料。 如果多個執行緒執行的程式碼不同,這時候需要用不同的Runnable物件。將共享物件封裝在另一個物件中,然後
java多執行緒與併發之建立執行緒的幾種方式
1、繼承Thread類方法 public class Demo1 extends Thread{ @Override public void run() { //判斷標誌 while(true) { System.out.println(get
java 面試知識點筆記(九)多執行緒與併發 中下篇
問:執行緒有哪些狀態? 新建(new):建立後尚未啟動的執行緒的狀態(新建立的執行緒但還沒有呼叫start方法) 執行