多執行緒(中) 常用類和包總結

2021-10-22 09:24:50 字數 3242 閱讀 9353

(3)linkedblockingqueue

(4)concurrenthashmap

(5)執行緒池

threadlocal x = new threadlocal()

date用來表示時間,calendar用來操作時間

******dateformat示例

date and time pattern

result

「yyyy.mm.dd g 『at』 hh:mm:ss z」

2001.07.04 ad at 12:08:56 pdt

「eee, mmm d, ''yy」

wed, jul 4, '01

「h:mm a」

12:08 pm

「hh 『o』『clock』 a, zzzz」

12 o』clock pm, pacific daylight time

「k:mm a, z」

0:08 pm, pdt

「yyyyy.mmmmm.dd ggg hh:mm aaa」

02001.july.04 ad 12:08 pm

「eee, d mmm yyyy hh:mm:ss z」

wed, 4 jul 2001 12:08:56 -0700

「yymmddhhmmssz」

010704120856-0700

「yyyy-mm-dd』t』hh:mm:ss.sssz」

2001-07-04t12:08:56.235-0700

「yyyy-mm-dd』t』hh:mm:ss.sss***」

2001-07-04t12:08:56.235-07:00

「yyyy-'w』ww-u」

2001-w27-3

timer timer = new timer()

timer.scheduleatfixedrate(要被執行的任務,0,timeunit.seconds.tomillis(2))

括號內引數:任務,延時,頻率

強制關鍵字每次都從主存獲取變數資料,防止指令重排引發錯誤

atomic運算元,確保不會因為執行緒問題而引起混亂

常用模式

lock lock =

newreentrantlock();

//括號內寫false,代表非公平鎖;預設不公平;公平為true

tryfinally

lock.

trylock

(1,timeunit.seconds);

lock.

unlock()

;第乙個引數代表大小,第二個是單位

trylock一秒,lock不住就不lock了

常用模式

lock lock =

newreentrantlock()

; condition condition = lock.

newcondition()

;try

finally

await和signal也是要用在lock和unlock之間

常用模式

countdownlatch countdownlatch =

newcountdownlatch(10

);countdownlatch.

countdown()

; countdownlatch.

await()

;

只需要countdown即可,不需要結束,執行緒可以繼續做別的事情

await不需要等待時間,隨時使用,join需要確保執行緒已經start

常用模式

linkedblockingqueue linkedblockingqueue =

newlinkedblockingqueue(50

);linkedblockingqueue.

peek()

;//瞟一眼,拿出引用,如果沒有就返回空

linkedblockingqueue.

offer(""

);//往佇列新增元素,返回布林值,是否新增成功

linkedblockingqueue.

poll()

;//從佇列中拉出乙個元素,為空就返回null

linkedblockingqueue.

put("")

;//往佇列中新增乙個元素,滿了就等待

linkedblockingqueue.

remove()

;//拿出,為空就拋異常

linkedblockingqueue.

take()

;//往佇列中拿出元素,為空就等待

執行緒安全,引數可傳大小

常用模式

map map =

newconcurrenthashmap()

; map.

computeifabsent()

;//如果存在就修改,內部為雙運算元方法,可以呼叫lambda進行修改

map.

containskey()

; map.

compute()

;

執行緒安全

常用模式

private executorservice service = executors.

newcachedthreadpool()

; service.

submit

(new

clienthandler

(socket)

)

除了可以建立可變的執行緒池,還可以建立固定大小的

括號新增需要執行的任務

java 多執行緒中常用的鎖

1.synchronized 同步 2.object.wait object.notify 配合synchronized使用 3.readwritelock 讀寫鎖 讀寫 讀非阻塞阻塞寫 阻塞阻塞 注 讀操作次數遠大於寫操作,讀寫鎖優勢最大 4.condition 配合lock使用 類似 objec...

多執行緒三 執行緒中常用的函式

1.sleep 1.1 執行緒睡眠 thread.sleep long millis 方法,使執行緒轉到阻塞狀態。millis引數設定睡眠的時間,以毫秒為單位。當睡眠結束後,就轉為就緒 runnable 狀態。當前執行緒 即呼叫該方法的執行緒 暫停執行一段時間,讓其他執行緒有機會繼續執行,但它並不釋...

Foundation中常用結構體和類總結

foundation中常用結構體 nsrange nspoint cgpoint nssize cgsize nsrect cgrect foundation中常用類 1 nsstring 字串類 不可變 nsmutablestring 可變字串類 字串類子類 2 nsarray 陣列 不可變 有序...