Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

JUC并发工具类在大厂的应用场景详解 PDF 下载


分享到:
时间:2024-03-06 14:17来源:http://www.java1234.com 作者:转载  侵权举报
JUC并发工具类在大厂的应用场景详解
失效链接处理
JUC并发工具类在大厂的应用场景详解 PDF 下载
 
 
相关截图:
 


主要内容:


1.2 ReentrantLock使用
独占锁:模拟抢票场景
8张票,10个人抢,如果不加锁,会出现什么问题?
 
1 /**
2 * 模拟抢票场景
3 */
4 public class ReentrantLockDemo {
5
6 private final ReentrantLock lock = new ReentrantLock();//默认非公平
7 private static int tickets = 8; // 总票数
8
9 public void buyTicket() {
10 lock.lock(); // 获取锁
11 try {
12 if (tickets > 0) { // 还有票
13 try {
14 Thread.sleep(10); // 休眠10ms,模拟出并发效果
15 } catch (InterruptedException e) {
16 e.printStackTrace();
17 }
18 System.out.println(Thread.currentThread().getName() + "购买了第" +
tickets-- + "张票");
19 } else {
20 System.out.println("票已经卖完了," + Thread.currentThread().getName() +
"抢票失败");
21 }
22
23 } finally {
24 lock.unlock(); // 释放锁
25 }
26 }
27
28
29 public static void main(String[] args) {
30 ReentrantLockDemo ticketSystem = new ReentrantLockDemo();
31 for (int i = 1; i <= 10; i++) {
32 Thread thread = new Thread(() -> {
33
34 ticketSystem.buyTicket(); // 抢票
35
36 }, "线程" + i);
37 // 启动线程
38 thread.start();
39
40 }
41
42
43 try {
44 Thread.sleep(3000);
45 } catch (InterruptedException e) {
46 throw new RuntimeException(e);
47 }
48 System.out.println("剩余票数:" + tickets);
49 }
50 }

 

 

 
 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐