当时用多线程访问同一个资源时,非常容易出现线程安全的问题,例如当多个线程同时对一个数据进行修改时,会导致某些线程对数据的修改丢失。
Demo01ThreadClash.java
public class Demo01ThreadClash implements Runnable{
private int ticketNum = 100;
@Override
public void run() {
while (true){
if(ticketNum > 0){
//为了增强显示冲突效果,加入休眠
try {
Thread.sleep(10);
System.out.println(Thread.currentThread().getName() + "正在出售第"
+ ticketNum + "张票");
} catch (InterruptedException e) {
e.printStackTrace();
}
/*System.out.println(Thread.currentThread().getName() + "正在出售第"
+ ticketNum + "张票");*/
ticketNum--;
}
}
}
}
Demo01.java