线程九—— 模拟延时 放大问题的发生性
注意: 这里模拟了三个线程同时抢票的问题,很明显这种线程是不安全的,因为有为会抢到0和-1的票,所以我们就需要解决问题的发生性,请关注下章节的内容。。。。
package com.yyf.ThreadSleep;// 模拟延时 : 放大问题的发生性public class TestSleep implements Runnable{ int ticketNum=10; @Override public void run() { while (true){ if (ticketNum<=0){ break; } try { Thread.sleep (200); } catch (InterruptedException e) { e.printStackTrace (); } System.out.println (Thread.currentThread ().getName ()+"拿到了第"+ticketNum--+"张票"); } } public static void main(String[] args) { com.yyf.Thread.TestTread5 t = new com.yyf.Thread.TestTread5 (); new Thread (t,"小明").start (); new Thread (t,"小张").start (); new Thread (t,"黄牛").start (); } }
运行结果:
小明拿到了第10张票
黄牛拿到了第8张票
小张拿到了第9张票
小明拿到了第6张票
黄牛拿到了第5张票
小张拿到了第7张票
小张拿到了第4张票
小明拿到了第2张票
黄牛拿到了第3张票
小明拿到了第0张票
小张拿到了第1张票
黄牛拿到了第-1张票
进程已结束,退出代码为 0