多线程并发操作同一数据时,就有可能出现线程安全问题。
下面就会出现线程安全问题
package com.itheima.syn;
/*
* 铁路售票,一共100张,通过四个窗口售完
* */
public class Demo3_Ticket {
public static void main(String[] args) {
new Ticket().start();
new Ticket().start();
new Ticket().start();
new Ticket().start();
}
}
//锁的两种类型.
class Ticket extends Thread {
private static int ticket = 100;
public void run() {
while(true) {
//synchronized(Ticket.class) {//2.用该类的字节码对象作为锁对象
if(ticket <= 0) {
break;
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(getName() + "第" + ticket-- + "票正在售.");
}
}
}
|