執行緒部分方法:
join();//等待該執行緒死亡
yield();表示該執行緒願意產生一些當前使用的處理器
setpriority(1~10);優先順序,預設的是5
thread.currentthread()獲得當前正在執行的執行緒物件
getname();獲得名字
setname();修改名字
new thread(任務,「名字」);
sleep(毫秒);睡眠
同步鎖多執行緒操作的時候可能會出現安全問題,因為當乙個執行緒正在運算的過程中,另乙個執行緒也參與了,這時就用到了同步鎖。
同步鎖: synchronized
synchronized(唯一 鎖 共享物件)
private
int count =
100;
while
(count>0)
trycatch
(interruptedexception e)
system.out.
println
(thread.
currentthread()
.getname()
+"在賣,剩餘"
+--count);}
}
lock鎖
private lock lock;
private
int cont =
100;
public
ticket
(lock lock)
while
(true
) thread.
sleep
(100);
system.out.
println
(thread.
currentthread()
.getname()
+"正在賣:"+(
--cont)
+"張票");
}catch
(interruptedexception e)
finally
}
synchronized和lock鎖的區別 :
1、synchronized會自動釋放鎖(a 執行緒執行完同步**會釋放鎖 ;b 執行緒執行過程中發生異常會釋放鎖),lock需在finally中手工釋放鎖(unlock()方法釋放鎖),否則容易造成執行緒死鎖
2、用synchronized關鍵字的兩個執行緒1和執行緒2,如果當前執行緒1獲得鎖,執行緒2執行緒等待。
如果執行緒1阻塞,執行緒2則會一直等待下去,而lock鎖就不一定會等待下去,如果嘗試獲取不到鎖,執行緒可以不用一直等待就結束了
3、synchronized放棄鎖只有兩種情況:①執行緒執行完了同步**塊的內容②發生異常;而lock不同,它可以設定超時時間,也就是說他可以在獲取鎖時便設定超時時間,如果在你設定的時間內它還沒有獲取到鎖,那麼它會放棄獲取鎖然後響應放棄操作
單列模式
單列模式:為了保證類物件的唯一(只能建立乙個例項)
1、物件的構建通過構造器執行來建立
2、不能在其他類中隨意建立物件
3、物件的建立在本類中提供乙個公共方法
單列集合的建立方式: 懶漢模式存在的問題及處理:多執行緒呼叫時容易出現建立多個物件,可以新增鎖來處理
class
single
public
static single getsingle()
}}return single;
}}
餓漢式:
工作中常用的是餓漢式
class
single2
public
static single2 getinstance()
}
執行緒同步鎖
同步鎖 對於兩個函式a,b,建立兩條執行緒,並且讓其睡眠,流程上看似輪流執行,其實不是,因為涉及到cpu切換去執行問題。import threading import time def a for i in range 3 print a str i time.sleep 0.01 def b fo...
Linux 執行緒同步方法 互斥鎖
在單執行緒條件下,由於對資料操作,在同樣的時間下,只有乙個執行緒來操作。所以不用擔心資料的同步問題。現代的作業系統,大都提供併發機制,雖然有時候是表面的併發。在 linux 中,併發用的最多的是基於執行緒的併發,程序的代價太高了,這樣,乙個共享的資料,在同一時間內,可能有多個執行緒在操作。如果沒有同...
終於理解單列模式了,單列模式和多執行緒
1 單例類確保自己只有乙個例項 構造方法私有化 2 單例類必須自己建立自己的例項。3 單例類必須為其他物件提供唯一的例項。package singleton 懶漢式 單例例項在第一次被使用時構建,延遲初始化。public class singleton return sing public void...