【多線程】多個線程同時操作一個對象,買火車票的例子
多個線程同時操作一個對象,買火車票的例子
代碼示例:
/**
* @Description 多個線程同時操作一個對象,買火車票的例子
* @Author hzx
* @Date 2022-03-26
*/
public class ThreadTest03 implements Runnable {
//票數
private int ticketNums = 10;
@Override
public void run() {
while (true) {
if (ticketNums<=0) {
break;
}
//模擬延時
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"-->拿到了第"+ticketNums--+"張票");
}
}
public static void main(String[] args) {
ThreadTest03 ticket = new ThreadTest03();
new Thread(ticket, "張三").start();
new Thread(ticket, "李四").start();
new Thread(ticket, "王五").start();
}
}
執行結果:
王五-->拿到了第9張票
李四-->拿到了第10張票
張三-->拿到了第8張票
李四-->拿到了第6張票
王五-->拿到了第7張票
張三-->拿到了第7張票
李四-->拿到了第5張票
王五-->拿到了第5張票
張三-->拿到了第4張票
王五-->拿到了第3張票
李四-->拿到了第3張票
張三-->拿到了第3張票
張三-->拿到了第1張票
王五-->拿到了第0張票
李四-->拿到了第2張票
- 發現問題:多個線程操作同一個資源的情況下,線程不安全,數據紊亂。

浙公網安備 33010602011771號