1. 程式人生 > 其它 >使用火車票搶購來模擬多執行緒安全問題

使用火車票搶購來模擬多執行緒安全問題

package 執行緒;
//多個執行緒操作同一個物件
//買火車票
//多個執行緒操作同一個資源的情況下,執行緒不安全,資料紊亂
public class TestThred4 implements Runnable{
int tickerNum=10;//票數
@Override
public void run() {
while(true){
if(tickerNum<1){
break;
}
//模擬延遲

try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"------拿到了第"+tickerNum--+"張票");
}
}

public static void main(String[] args) {
TestThred4 testThred4=new TestThred4();
new Thread(testThred4,"小明").start();//給執行緒命名
new Thread(testThred4,"老司機").start();
new Thread(testThred4,"黃牛").start();

}
}
//上述情況會出現多個人同時搶到同一張票

黃牛------拿到了第8張票
老司機------拿到了第9張票
小明------拿到了第10張票
黃牛------拿到了第7張票
老司機------拿到了第6張票
小明------拿到了第5張票
老司機------拿到了第4張票
黃牛------拿到了第4張票
小明------拿到了第4張票
黃牛------拿到了第3張票
小明------拿到了第2張票
老司機------拿到了第1張票