版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011066470/article/details/86663976
一.主类
package com.ljf.thread.demo.lock;
public class LockDemo {
public static void main(String args[]){
LockA la=new LockA();
new Thread(la,"a").start();
new Thread(la,"b").start();
new Thread(la,"c").start();
}
}
package com.ljf.thread.demo.lock;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class LockA implements Runnable{
private int tickets=100;
private Lock lock=new ReentrantLock();//公用一把锁
public void run() {
while (true){
try {
lock.lock();
if(tickets>0){
System.out.println(Thread.currentThread().getName()+"消费:"+tickets--);
}
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
}
}
执行结果:
a消费:100
a消费:99
a消费:98
a消费:97
a消费:96
a消费:95
a消费:94
a消费:93
a消费:92
b消费:91
b消费:90
c消费:89
c消费:88
c消费:87
a消费:86
a消费:85
a消费:84
a消费:83
a消费:82
a消费:81
a消费:80
b消费:79
b消费:78
b消费:77
b消费:76
b消费:75
c消费:74
c消费:73
c消费:72
c消费:71
c消费:70
c消费:69
a消费:68
a消费:67
a消费:66
a消费:65
b消费:64
c消费:63
c消费:62
c消费:61
c消费:60
c消费:59
a消费:58
a消费:57
a消费:56
a消费:55
b消费:54
b消费:53
c消费:52
c消费:51
a消费:50
b消费:49
c消费:48
a消费:47
a消费:46
b消费:45
b消费:44
b消费:43
b消费:42
b消费:41
b消费:40
b消费:39
b消费:38
b消费:37
b消费:36
b消费:35
b消费:34
b消费:33
b消费:32
b消费:31
b消费:30
b消费:29
c消费:28
a消费:27
a消费:26
a消费:25
a消费:24
a消费:23
a消费:22
a消费:21
a消费:20
a消费:19
a消费:18
a消费:17
a消费:16
a消费:15
a消费:14
b消费:13
b消费:12
c消费:11
a消费:10
a消费:9
a消费:8
a消费:7
a消费:6
a消费:5
b消费:4
b消费:3
b消费:2
c消费:1