1. 程式人生 > >多執行緒與併發學習記錄

多執行緒與併發學習記錄



1:執行緒的方式

 

Extends Thread

Implements Runnable

2:2中方式的區別

Runnable 更加能體現面向物件的思想   即

 

宣告執行緒是一部分  執行緒的實現是一部分

3:定時器的應用

3.1timer

3.2timertask

 

//是指3秒後執行的程式碼

 

 

-----------------若將時間改為 結果為:


3.3:子母類  就是裡面有包括一個

 

3.4:幾號幾點幹什麼專業工具

Quartz

4:執行緒的互斥和同步

4.1:多執行緒互斥(重要解決方法是找到同一個鎖)




這是一個完整的程式碼,但是會出現多執行緒互斥的問題 

解決方法有2中,一個是錯誤的  一個是對的

錯誤的解決方法

 

用name 作為鎖,之所以是錯誤的,是因為這個鎖子必須是公用程式碼塊特有的部分,在這裡2個方法都用了 這個方法,即name2個值 ,那麼就有了2個鎖子  ,所以是不會同步的 ,是錯誤的

對的方法

 

或者

 

或者

 

都進過xx 是一個值 所以是對的  同步的鎖一定要是同一個物件

注意:

 

它的作用相當於

 

Static 是記憶體為鎖  所以需要位元組碼去匹配

4.2:通訊

 

 


執行邏輯就是:

i=1時執行子執行緒,執行2次後,bShouldSub=true,且喚醒主執行緒,主執行緒執行i=2時的情況 ,以此類推。

5ThreadLocal實現執行緒範圍的共享變數

 

6java5後新增的類(執行緒併發庫)

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方法) 執行