本文主要是介绍火车买票案例之用sleep模拟网络延时,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Sleep:sleep:每个对象都有一把锁,sleep不会释放锁
-
不建议使用jdk不推荐的方法,如stop,destroy等.
-
道德问题很重要:德治
多个线程同时争抢一个对象
火车买票:模拟网络延时,放大问题的发生性.
package com.li.changGe.multithreading.threadState;import java.text.SimpleDateFormat;
import java.util.Date;public class SleepDemo01 implements Runnable{private static boolean flag = true;private static int num = 100;public static void main(String[] args) {SleepDemo01 sleepDemo01 = new SleepDemo01();new Thread(sleepDemo01,"学生").start();new Thread(sleepDemo01,"老师").start();new Thread(sleepDemo01,"黄牛党").start();/*** 电脑很快,到达停止条件时改变标识符来停止线程*/for (int i = 0; i < 100000; i++) {if(i == 90000){System.out.println("可以停止了");sleepDemo01.stop();}}}/*** 获得当前时间并转换格式*/public String getCurrentTime(){Date data = new Date(System.currentTimeMillis());String format = new SimpleDateFormat("HH:mm:dd").format(data);return format;}/*** 火车买票:模拟网络延时,放大问题的发生性.** 多个线程同时争抢一个对象*/@Overridepublic void run() {while(flag){System.out.println(getCurrentTime()+Thread.currentThread().getName()+"买到第"+ num-- +"张票");try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}}}/*** 建议使用外部标识符来停止线程*/public void stop(){flag = false;}}
这篇关于火车买票案例之用sleep模拟网络延时的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!