Java鎖機(jī)制Lock用法示例
本文實(shí)例講述了Java鎖機(jī)制Lock用法。分享給大家供大家參考,具體如下:
package com.expgiga.JUC; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * 一、用于解決多線程安全問(wèn)題的方式: * 1.同步代碼塊 synchronized 隱式鎖 * 2.同步方法 synchronized 隱式鎖 * 3.同步鎖Lock (jdk1.5以后) 顯示鎖 * 注意:顯示鎖,需要通過(guò)lock()方式上鎖,必須通過(guò)unlock()方式進(jìn)行釋放鎖 */ public class TestLock { public static void main(String[] args) { Ticket ticket = new Ticket(); new Thread(ticket, "1號(hào)窗口").start(); new Thread(ticket, "2號(hào)窗口").start(); new Thread(ticket, "3號(hào)窗口").start(); } } class Ticket implements Runnable { private int tick = 100; private Lock lock = new ReentrantLock(); @Override public void run() { while (true) { lock.lock(); try { if (tick > 0) { try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " 完成售票,余票為 " + --tick); } } finally { lock.unlock(); } } } }
運(yùn)行結(jié)果:
1號(hào)窗口 完成售票,余票為 99
2號(hào)窗口 完成售票,余票為 98
2號(hào)窗口 完成售票,余票為 97
2號(hào)窗口 完成售票,余票為 96
2號(hào)窗口 完成售票,余票為 95
3號(hào)窗口 完成售票,余票為 94
1號(hào)窗口 完成售票,余票為 93
1號(hào)窗口 完成售票,余票為 92
1號(hào)窗口 完成售票,余票為 91
1號(hào)窗口 完成售票,余票為 90
1號(hào)窗口 完成售票,余票為 89
1號(hào)窗口 完成售票,余票為 88
1號(hào)窗口 完成售票,余票為 87
1號(hào)窗口 完成售票,余票為 86
2號(hào)窗口 完成售票,余票為 85
3號(hào)窗口 完成售票,余票為 84
1號(hào)窗口 完成售票,余票為 83
2號(hào)窗口 完成售票,余票為 82
3號(hào)窗口 完成售票,余票為 81
1號(hào)窗口 完成售票,余票為 80
1號(hào)窗口 完成售票,余票為 79
1號(hào)窗口 完成售票,余票為 78
1號(hào)窗口 完成售票,余票為 77
1號(hào)窗口 完成售票,余票為 76
1號(hào)窗口 完成售票,余票為 75
1號(hào)窗口 完成售票,余票為 74
1號(hào)窗口 完成售票,余票為 73
1號(hào)窗口 完成售票,余票為 72
2號(hào)窗口 完成售票,余票為 71
2號(hào)窗口 完成售票,余票為 70
2號(hào)窗口 完成售票,余票為 69
2號(hào)窗口 完成售票,余票為 68
3號(hào)窗口 完成售票,余票為 67
1號(hào)窗口 完成售票,余票為 66
1號(hào)窗口 完成售票,余票為 65
1號(hào)窗口 完成售票,余票為 64
1號(hào)窗口 完成售票,余票為 63
1號(hào)窗口 完成售票,余票為 62
1號(hào)窗口 完成售票,余票為 61
2號(hào)窗口 完成售票,余票為 60
2號(hào)窗口 完成售票,余票為 59
3號(hào)窗口 完成售票,余票為 58
3號(hào)窗口 完成售票,余票為 57
1號(hào)窗口 完成售票,余票為 56
1號(hào)窗口 完成售票,余票為 55
2號(hào)窗口 完成售票,余票為 54
2號(hào)窗口 完成售票,余票為 53
2號(hào)窗口 完成售票,余票為 52
3號(hào)窗口 完成售票,余票為 51
1號(hào)窗口 完成售票,余票為 50
1號(hào)窗口 完成售票,余票為 49
1號(hào)窗口 完成售票,余票為 48
1號(hào)窗口 完成售票,余票為 47
1號(hào)窗口 完成售票,余票為 46
1號(hào)窗口 完成售票,余票為 45
2號(hào)窗口 完成售票,余票為 44
3號(hào)窗口 完成售票,余票為 43
3號(hào)窗口 完成售票,余票為 42
3號(hào)窗口 完成售票,余票為 41
3號(hào)窗口 完成售票,余票為 40
3號(hào)窗口 完成售票,余票為 39
1號(hào)窗口 完成售票,余票為 38
2號(hào)窗口 完成售票,余票為 37
2號(hào)窗口 完成售票,余票為 36
2號(hào)窗口 完成售票,余票為 35
2號(hào)窗口 完成售票,余票為 34
2號(hào)窗口 完成售票,余票為 33
2號(hào)窗口 完成售票,余票為 32
2號(hào)窗口 完成售票,余票為 31
3號(hào)窗口 完成售票,余票為 30
1號(hào)窗口 完成售票,余票為 29
1號(hào)窗口 完成售票,余票為 28
1號(hào)窗口 完成售票,余票為 27
1號(hào)窗口 完成售票,余票為 26
1號(hào)窗口 完成售票,余票為 25
1號(hào)窗口 完成售票,余票為 24
1號(hào)窗口 完成售票,余票為 23
1號(hào)窗口 完成售票,余票為 22
1號(hào)窗口 完成售票,余票為 21
1號(hào)窗口 完成售票,余票為 20
1號(hào)窗口 完成售票,余票為 19
1號(hào)窗口 完成售票,余票為 18
1號(hào)窗口 完成售票,余票為 17
1號(hào)窗口 完成售票,余票為 16
1號(hào)窗口 完成售票,余票為 15
2號(hào)窗口 完成售票,余票為 14
2號(hào)窗口 完成售票,余票為 13
2號(hào)窗口 完成售票,余票為 12
3號(hào)窗口 完成售票,余票為 11
3號(hào)窗口 完成售票,余票為 10
3號(hào)窗口 完成售票,余票為 9
1號(hào)窗口 完成售票,余票為 8
1號(hào)窗口 完成售票,余票為 7
1號(hào)窗口 完成售票,余票為 6
1號(hào)窗口 完成售票,余票為 5
2號(hào)窗口 完成售票,余票為 4
3號(hào)窗口 完成售票,余票為 3
1號(hào)窗口 完成售票,余票為 2
2號(hào)窗口 完成售票,余票為 1
2號(hào)窗口 完成售票,余票為 0
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java進(jìn)程與線程操作技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
- Java多線程+鎖機(jī)制實(shí)現(xiàn)簡(jiǎn)單模擬搶票的項(xiàng)目實(shí)踐
- Java中的CAS鎖機(jī)制(無(wú)鎖、自旋鎖、樂(lè)觀鎖、輕量級(jí)鎖)詳解
- Java中的CAS無(wú)鎖機(jī)制實(shí)現(xiàn)原理詳解
- java鎖機(jī)制ReentrantLock源碼實(shí)例分析
- 淺談Java鎖機(jī)制
- java synchronized 鎖機(jī)制原理詳解
- Java線程并發(fā)中常見(jiàn)的鎖機(jī)制詳細(xì)介紹
- Java 多線程同步 鎖機(jī)制與synchronized深入解析
- Java 并發(fā)編程中的鎖機(jī)制示例詳解
相關(guān)文章
Java實(shí)現(xiàn)List轉(zhuǎn)換為Map的方法小結(jié)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)List轉(zhuǎn)換為Map的一些常見(jiàn)的方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下2024-03-03提升網(wǎng)絡(luò)請(qǐng)求穩(wěn)定性HttpClient的重試機(jī)制深入理解
這篇文章主要為大家介紹了提升網(wǎng)絡(luò)請(qǐng)求穩(wěn)定性HttpClient的重試機(jī)制深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10Java實(shí)現(xiàn)將彩色PDF轉(zhuǎn)為灰度PDF的示例代碼
本文以Java代碼為例介紹如何實(shí)現(xiàn)將彩色PDF文件轉(zhuǎn)為灰度(黑白)的PDF文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2022-03-03java基礎(chǔ)(System.err和System.out)詳解
下面小編就為大家?guī)?lái)一篇java基礎(chǔ)(System.err和System.out)詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06Struts2 的國(guó)際化實(shí)現(xiàn)方式示例
這篇文章主要介紹了Struts2 的國(guó)際化實(shí)現(xiàn)方式示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10JAVALambda表達(dá)式與函數(shù)式接口詳解
大家好,本篇文章主要講的是JAVALambda表達(dá)式與函數(shù)式接口詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02Java超詳細(xì)講解SpringMVC如何獲取請(qǐng)求數(shù)據(jù)
Spring?MVC?是?Spring?提供的一個(gè)基于?MVC?設(shè)計(jì)模式的輕量級(jí)?Web?開(kāi)發(fā)框架,本質(zhì)上相當(dāng)于?Servlet,Spring?MVC?角色劃分清晰,分工明細(xì),本章來(lái)講解SpringMVC如何獲取請(qǐng)求數(shù)據(jù)2022-04-04java與scala數(shù)組及集合的基本操作對(duì)比
這篇文章主要介紹了java與scala數(shù)組及集合的基本操作對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10java實(shí)現(xiàn)微信企業(yè)付款到個(gè)人
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)微信企業(yè)付款到個(gè)人功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10