/*
线程安全问题产生发原因:
1 多个线程在操作同一个数据
2 操作共享数据的线程代码有多条
当一个线程在执行操作共享数据的多条代码过程中 其他线程参与了运算
就会导致线程安全问题的产生
*/
class Ticket implements Runnable{
private int num=100;
public void run(){
while(true){
if(num>0){//cpu 运行到这里 判断>0后 运行下一个线程 下一个线程将num--
//cpu 回来时不需要判读>0(已经判断过了) 直接num-- 会出现-1 -2 (错误)
try{
Thread.sleep(10);
}
catch(InterruptedException e){
}
System.out.println(Thread.currentThread().getName()+"--sale="+num--);
}
}
}
}
class ThreadDemo{
public static void main(String[] args) {
Ticket t=new Ticket();
Thread t1=new Thread(t);
Thread t2=new Thread(t);
Thread t3=new Thread(t);
t1.start();
t2.start();
t3.start();
}
}