執行緒安全處理的3種方式

2022-03-03 14:25:27 字數 1744 閱讀 9764

,本次電影的座位共

100個

(本場電影只能賣100張票

)。**如下:

public

class

tickects implements runnable catch

(interruptedexception e)

system.

out.println(thread.currentthread().getname()+"

售出了第

"+ticket--+"張票"

); }}}

}

public

class

demo01

執行結果如下:

出現的問題:出現重複票  錯誤票0

解決方法:①同步**塊 使用synchronized 關鍵字 (鎖物件)

public

class

tickects02 implements runnable

catch

(interruptedexception e)

system.

out.println(thread.currentthread().getname()+"

售出了第

"+ticket--+"張票"

); }

} }}

}public

class

demo02

}

② 同步方法

public synchronized void method()

public

class

tickects03 implements runnable

}//同步方法(內建鎖物件this)

public synchronized void

sale()

catch

(interruptedexception e)

system.

out.println(thread.currentthread().getname()+"

售出了第

"+ticket--+"張票"

); }

}}public

class

demo03

}

③用lock 介面

public

class

tickects04 implements runnable

catch

(interruptedexception e)

system.

out.println(thread.currentthread().getname()+"

售出了第

"+ticket--+"張票"

); }

//釋放鎖

lock

.unlock();}}

}public

class

demo04

}

這三種方法列印出結果是相同的:

無重複,無錯誤票;

Java 執行緒安全的Map的實現方式3種

1.hashmap,treemap 未進行同步考慮,是執行緒不安全的。2.hashtable 和 concurrenthashmap 都是執行緒安全的。區別在於他們對加鎖的範圍不同,hashtable 對整張hash表進行加鎖,而concurrenthashmap將hash表分為16桶 segmen...

建立執行緒的3種方式

1 定義thread類的子類,並重寫該類的run方法,該run方法的方法體就代表了執行緒要完成的任務。因此把run 方法稱為執行體。2 建立thread子類的例項,即建立了執行緒物件。3 呼叫執行緒物件的start 方法來啟動該執行緒。public class mythread extends th...

執行緒通訊 3種方式

一 傳統執行緒通訊 synchronized wait notify object類的wait notify notifyall 三個方法必須由同步監視器物件來呼叫,分兩種情況 a 同步方法,該類預設例項 this 就是同步監視器,可以在同步方法中可以直接呼叫 b 同步 塊,同步監視器是synchr...