java的線程安全四種方式五個(gè)等級
更新時(shí)間: 2007-06-04 10:34:36來源: 粵嵌教育瀏覽量:649
四種方式 sychronized關(guān)鍵字
sychronized method(){}
sychronized (objectReference) {/*block*/}
static synchronized method(){}
sychronized(classname.class)
其中1和2是代表鎖當(dāng)前對象,即一個(gè)對象就一個(gè)鎖,3和4代表鎖這個(gè)類,即這個(gè)類的鎖
要注意的是sychronized method()不是鎖這個(gè)函數(shù),而是鎖對象,即:如果這個(gè)類中有兩個(gè)方法都是sychronized,那么只要有兩個(gè)線程共享一個(gè)該類的reference,每個(gè)調(diào)用這兩個(gè)方法之一,不管是否同一個(gè)方法,都會用這個(gè)對象鎖進(jìn)行同步。鎖類的3和4類推,即該類的不同reference調(diào)用了sychronized區(qū)段的咚咚就會受類鎖的控制
還有,如果兩個(gè)函數(shù)調(diào)用的先后順序不能被打斷,那么可以有個(gè)專門的鎖對象來完成這個(gè)任務(wù):
class MyLock
{
synchronized getLock()
{
//####還沒寫完
}
}
五個(gè)等級 參見effective java Item 52 : Document thread safety
immutable 不可變對象
thread-safe 線程安全的,可以放心使用,如java.util.Timer
conditionally thread-safe 條件線程安全的,如Vector和Hashtable,一般是安全的,除非存在幾個(gè)方法調(diào)用之間的順序不能被打斷,這時(shí)可以用額外的鎖來完成
thread-compatible 可以使用synchronized (objectReference)來協(xié)助完成對線程的調(diào)用
thread-hostile 不安全的
wait & notifyAll
在循環(huán)中使用wait 使用notifyAll而不是notify
pipe
java中也有pipe的,四個(gè)類:PipedInputStream, PipedInputReader, PipedOutputStream, PipedOutputWriter 下面是一段生產(chǎn)者消費(fèi)者的代碼(摘自core javaII):
/* set up pipes */
PipedOutputStream pout1 = new PipedOutputStream();
PipedInputStream pin1 = new PipedInputStream(pout1);
PipedOutputStream pout2 = new PipedOutputStream();
PipedInputStream pin2 = new PipedInputStream(pout2);
/* construct threads */
Producer prod = new Producer(pout1);
Filter filt = new Filter(pin1, pout2);
Consumer cons = new Consumer(pin2);
/* start threads */
prod.start(); filt.start(); cons.start();
粵嵌動(dòng)態(tài)
推薦閱讀
- ·Linux字符設(shè)備驅(qū)動(dòng)框架解析:file_operations的核心作用與實(shí)現(xiàn)
- ·廣東朝歌數(shù)碼科技股份有限公司專場招聘會
- ·深化產(chǎn)教融合,共筑技能人才培養(yǎng)新生態(tài) —— 廣州華立學(xué)院到訪粵嵌從化校區(qū)為深化產(chǎn)教
- ·校企合作新突破 | 粵嵌科技與三亞學(xué)院共探產(chǎn)教融合新路徑
- ·粵嵌科技入選國家級職業(yè)數(shù)字展館聯(lián)合建設(shè)單位,賦能計(jì)算機(jī)程序設(shè)計(jì)員高技能人才培養(yǎng)
- ·嵌入式實(shí)時(shí)操作系統(tǒng)的性能優(yōu)化與實(shí)現(xiàn)路徑
- ·校企攜手賦能教育!粵嵌科技助力海南科技職業(yè)大學(xué)探索 AGI 時(shí)代教學(xué)新范式
- ·嵌入式系統(tǒng)中的低功耗設(shè)計(jì)策略與實(shí)現(xiàn)路徑
- ·深圳市軒宇軟件開發(fā)有限公司專場招聘會
- ·嵌入式系統(tǒng)中的代碼空間優(yōu)化:策略與實(shí)踐