发现问题,多个线程操作同一个资源的情况下,线程不安全,数据紊乱
1 package com.thread.demo01;
2
3 //多个线程同时操作同一个对象
4 //买火车票的例子
5
6 //发现问题,多个线程操作同一个资源的情况下,线程不安全,数据紊乱
7 public class TestThread04 implements Runnable {
8
9 //票数
10 private int ticketNums = 10;
11
12 @Override
13 public void run() {
14 while (true) {
15 if (ticketNums <= 0) {
16 break;
17 }
18 //模拟延时
19 try {
20 Thread.sleep(200);
21 } catch (InterruptedException e) {
22 e.printStackTrace();
23 }
24
25 System.out.println(Thread.currentThread().getName() + "-->拿到了" + ticketNums-- + "票");
26 }
27 }
28
29 public static void main(String[] args) {
30 TestThread04 ticket = new TestThread04();
31
32 new Thread(ticket, "小红").start();
33 new Thread(ticket, "老师").start();
34 new Thread(ticket, "黄牛").start();
35 }
36 }
37
38 结果:
39 黄牛-->拿到了9票
40 小红-->拿到了10票
41 老师-->拿到了9票
42 小红-->拿到了8票
43 黄牛-->拿到了7票
44 老师-->拿到了6票
45 黄牛-->拿到了5票
46 小红-->拿到了4票
47 老师-->拿到了4票
48 黄牛-->拿到了3票
49 老师-->拿到了1票
50 小红-->拿到了2票