码迷,mamicode.com
首页 > 其他好文 > 详细

Lock接口示例

时间:2020-03-14 16:19:14      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:ticket   print   rri   tran   匿名   dem   tst   font   for   

 

Lock 简单示例


public class LockDemo {

public static void main(String[] args) {
SaleTicket saleTicket = new SaleTicket();

new Thread(() -> {
for (int i = 1; i < 20; i++) {
saleTicket.sale();
}
}, "1号员工").start();
new Thread(() -> {
for (int i = 1; i < 20; i++) {
saleTicket.sale();
}
}, "2号员工").start();
new Thread(() -> {
for (int i = 1; i < 20; i++) {
saleTicket.sale();
}
}, "3号员工").start();

}


}

class SaleTicket {
private int number = 20;
private Lock lock = new ReentrantLock();

public void sale() {
lock.lock();//一进入就上锁

try {
if (number > 0) {
System.out.println(Thread.currentThread().getName() + "\t 卖出" + number-- + "号票\t还剩" + number);
}

} catch (Exception e) {
e.printStackTrace();
} finally {
lock.unlock();//最后一定要解锁
}
}
}

结果:
1号员工     卖出20号票    还剩19
1号员工     卖出19号票    还剩18
1号员工     卖出18号票    还剩17
1号员工     卖出17号票    还剩16
1号员工     卖出16号票    还剩15
1号员工     卖出15号票    还剩14
1号员工     卖出14号票    还剩13
1号员工     卖出13号票    还剩12
1号员工     卖出12号票    还剩11
1号员工     卖出11号票    还剩10
1号员工     卖出10号票    还剩9
1号员工     卖出9号票    还剩8
1号员工     卖出8号票    还剩7
1号员工     卖出7号票    还剩6
1号员工     卖出6号票    还剩5
1号员工     卖出5号票    还剩4
1号员工     卖出4号票    还剩3
3号员工     卖出3号票    还剩2
3号员工     卖出2号票    还剩1
2号员工     卖出1号票    还剩0

 

 

推荐启动线程的方式

第一种:匿名内部类

/*new Thread(new Runnable() {
@Override
public void run() {
for (int i = 1; i <= 20; i++) {
ticket.sale();
}
}
}, "AA").start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 1; i <= 20; i++) {
ticket.sale();
}
}
}, "BB").start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 1; i <= 20; i++) {
ticket.sale();
}
}
}, "CC").start();
*/

第二种:lombda表达式
     new Thread(() -> {
for (int i = 1; i < 20; i++) {
saleTicket.sale();
}
}, "1号员工").start();
new Thread(() -> {
for (int i = 1; i < 20; i++) {
saleTicket.sale();
}
}, "2号员工").start();
new Thread(() -> {
for (int i = 1; i < 20; i++) {
saleTicket.sale();
}
}, "3号员工").start();

Lock接口示例

标签:ticket   print   rri   tran   匿名   dem   tst   font   for   

原文地址:https://www.cnblogs.com/hpdblogs/p/12492497.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!