Java 並行程式基礎

2021-08-07 19:22:40 字數 1289 閱讀 4804

1.執行緒中斷

主要有三個方法:public void thread.interrupt()    // 中斷執行緒 

public boolean thread.isinterrupted()    //判斷是否非中斷

public static boolean thread.interrupted()  // 判斷是否被中斷,並清除當前中斷狀態

thread.sleep() 函式:讓當前執行緒休眠若干時間,會丟擲inteeruptedexception中斷異常,必須捕獲並處理,由中斷丟擲異常,會清楚中斷標誌位

2.等待(wait)和通知(notify):當乙個執行緒呼叫wait()方法後,當前執行緒就會在這個物件上等待,進入等待佇列。當notify()方法被呼叫,從等待佇列隨機選擇乙個執行緒喚醒,notifyall()方法喚醒等待佇列中所有的執行緒。必須包含在synchrozied語句中,都需要首先獲得目標物件的乙個監視器。與sleep()方法主要區別是wait()方法會釋放目標物件的鎖。

3. volatile() 保證操作的原子性,可見性,有序性。但是無法保證一些復合操作部的原子性

4.synchronized的作用是實現執行緒的同步,對同步的**加鎖,使每一次只能有乙個執行緒進入同步塊,他是不公平的鎖。

(1) 指定加鎖物件:給物件加鎖,進入同步物件之前要獲得給定物件的鎖。

(2)直接作用於例項方法:進入同步**前要或的當前例項的鎖

(3)直接作用於靜態方法:進入同步塊前要獲得當前類的鎖。

5. 同時有幾種執行緒不安全的列表:arraylist,hashmap等都是執行緒不安全的。

6.其他的幾種同步控制方法:

(1) 重入鎖reentrantlock,可以被中斷,鎖申請等待限時,公平鎖.主要方法:lock():獲得鎖,如果鎖已經被占用,則等待。lockinterruptibly():獲得鎖,但優先響應中斷。trylock():嘗試獲得鎖,該方法不等待,立即返回。trylock(long time,timeunit unit) 在給定時間內嘗試獲得鎖。unlock():釋放鎖。

7.提高鎖的 效能幾種方法:

1.減小鎖粒度:縮小鎖定物件的範圍,從而減小鎖衝突的可能  

2.減小鎖持有的時間

3.讀寫分離鎖來替換獨佔鎖:讀多寫少可以有效提公升效能

4.鎖分離

5:鎖粗化:在遇到一連串地對鎖進行請求和釋放的操作時,便把所有的鎖操作整合成對鎖的一次請求。

6:鎖偏向:如果乙個執行緒獲得了鎖,那馬就進入偏向模式,當這個執行緒子再次請求,無須在做任何同步操作。  

8.比較交換(cas):無鎖

Java並行程式基礎

程序是計算機中的程式關於某資料集合上的一次運動活動,是系統進行資源分配的基礎單位。程序是執行緒的容器。程式是指令 資料及其組織形式的描述,程序是程式的實體。執行緒的所有狀態都在thread的state列舉中 public enum state t1.start 也可以使用runnable介面來實現相...

併發程式與並行程式

併發程式是指可以被同時發起執行的程式 並行程式被設計成可以在並行的硬體上執行的併發程式。併發程式代表了所有可以實現並發行為的程式,它是乙個寬泛的概念,其中包含了並行程式。inter process communication 程序間通訊 go支援的ipc方法有管道 訊號和socket.程序 我們把乙...

並行程式 執行緒 二

和程序不同的是,程序中使用佇列用於程序間通訊 from multiprocessing import queue 執行緒中使用佇列 from queue import queue python3中 from queue import queue python2中 不過,程序和執行緒中關於queue的...