本文實(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
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選