Java鎖機(jī)制Lock用法示例
本文實(shí)例講述了Java鎖機(jī)制Lock用法。分享給大家供大家參考,具體如下:
package com.expgiga.JUC;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* 一、用于解決多線(xiàn)程安全問(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)容感興趣的讀者可查看本站專(zhuān)題:《Java進(jìn)程與線(xiàn)程操作技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
- java synchronized 鎖機(jī)制原理詳解
- Java線(xiàn)程并發(fā)中常見(jiàn)的鎖機(jī)制詳細(xì)介紹
- Java中的CAS鎖機(jī)制(無(wú)鎖、自旋鎖、樂(lè)觀(guān)鎖、輕量級(jí)鎖)詳解
- 詳解java中各類(lèi)鎖的機(jī)制
- Java多線(xiàn)程 樂(lè)觀(guān)鎖和CAS機(jī)制詳細(xì)
- 淺談Java鎖機(jī)制
- Java多線(xiàn)程鎖機(jī)制相關(guān)原理實(shí)例解析
- 關(guān)于Java鎖性能提高(鎖升級(jí))機(jī)制的總結(jié)
- Java鎖機(jī)制完整學(xué)習(xí)筆記(附詳細(xì)代碼)
相關(guān)文章
Spring-Cloud-Function-Spel?漏洞環(huán)境搭建
這篇文章主要介紹了Spring-Cloud-Function-Spel?漏洞復(fù)現(xiàn)及搭建方法,搭建方法也很簡(jiǎn)單,首先需要安裝maven jdk,具體安裝過(guò)程跟隨小編一起看看吧2022-03-03
Java如何用乘號(hào)來(lái)重復(fù)字符串的功能
這篇文章主要介紹了Java使用乘號(hào)來(lái)重復(fù)字符串的功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-05-05
spring中通過(guò)ApplicationContext getBean獲取注入對(duì)象的方法實(shí)例
今天小編就為大家分享一篇關(guān)于spring中通過(guò)ApplicationContext getBean獲取注入對(duì)象的方法實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
Sa-Token中的SaSession對(duì)象使用學(xué)習(xí)示例詳解
這篇文章主要為大家介紹了Sa-Token中的SaSession對(duì)象使用學(xué)習(xí)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
使用多個(gè)servlet時(shí)Spring security需要指明路由匹配策略問(wèn)題
這篇文章主要介紹了使用多個(gè)servlet時(shí)Spring security需要指明路由匹配策略問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
Tomcat服務(wù)器中文亂碼及Swagger亂碼相關(guān)配置解決過(guò)程
文章主要介紹了如何在IDEA中配置UTF-8編碼以解決編碼問(wèn)題,并提供了設(shè)置Tomcat服務(wù)器和Swagger的一些配置建議,希望能對(duì)大家有所幫助2025-11-11

