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的...