展现问题
先通过代码还原一下多线程并发的问题
package com.example.exception;
/** 模拟并发操作统一资源出现混乱的情况
* author liuyishou
* Date 2021/11/4
*/
public class Tickets implements Runnable{
int ticket_nums=10;
@Override
public void run() {
while (true){
if(ticket_nums<=0){
break;
}
System.out.println(Thread.currentThread().getName()+"抢到票了-->"+ticket_nums--);
}
}
public static void main(String[] args) {
Tickets tickets = new Tickets();
new Thread(tickets,"李雷").start();
new Thread(tickets,"韩梅梅").start();
new Thread(tickets,"黄牛").start();
}
}
执行后日志可以看到问题: