java实现多线程卖票(重点分析Thread.sleep())

来源:互联网 发布:java项目技术亮点难点 编辑:程序博客网 时间:2024/05/16 19:22
  1. 这里实现多线程卖票不是重点。重点是分析一下线程休眠后程序运行顺序。
  2. Thread.sleep()方法讲解请参考“http://blog.csdn.net/singwtwww/article/details/8492201”简单来说就是sleep()多少毫米内不参与cpu在竞争。注意windows平台采用的是抢占式算法。
    3.从结果中分析,线程启动后开始执行run方法。由于此处写的是while(flag),所以程序后一直执行,直到flag=false,注意打印aaaaaaaa只出现了一次。每次重复执行都是执行的while里面内容。可以从时间来判断顺序。
package testThread;import java.text.SimpleDateFormat;class money implements  Runnable {    private static int num=100;    boolean flag=true;    public void run() {         System.out.println("aaaaaaaaaaaaaaaa");        while (flag) {            System.out.println("bbbbbbbbbbbbbbb");                synchronized (this) {                    if (num>0) {                        try {                            SimpleDateFormat time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");                            String TimeString = time.format(new java.util.Date());                            System.out.println(TimeString);                            Thread.sleep(5000);                            num--;                        } catch (InterruptedException e) {                            // TODO Auto-generated catch block                            e.printStackTrace();                        }                        SimpleDateFormat time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");                        String TimeString = time.format(new java.util.Date());                        System.out.println(TimeString);                        System.out.println(Thread.currentThread().getName()+"郑州到南京还有"+num);                    }else {                        //让线程停止                        flag=false;                        System.out.println("没了");                    }                }                           }    }}public class thread2 {    public static void  main(String[] args) {        money mo=new money();        Thread thread1=new Thread(mo);        Thread thread2=new Thread(mo);        Thread thread3=new Thread(mo);        Thread thread4=new Thread(mo);        thread1.start();        thread2.start();        thread3.start();        thread4.start();    }}
aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbaaaaaaaaaaaaaaaabbbbbbbbbbbbbbb2016-09-26 11:37:212016-09-26 11:37:26Thread-0郑州到南京还有99bbbbbbbbbbbbbbb2016-09-26 11:37:262016-09-26 11:37:31Thread-2郑州到南京还有982016-09-26 11:37:31bbbbbbbbbbbbbbb2016-09-26 11:37:36Thread-3郑州到南京还有97bbbbbbbbbbbbbbb2016-09-26 11:37:362016-09-26 11:37:41Thread-1郑州到南京还有96bbbbbbbbbbbbbbb2016-09-26 11:37:412016-09-26 11:37:46Thread-3郑州到南京还有95bbbbbbbbbbbbbbb2016-09-26 11:37:462016-09-26 11:37:51Thread-2郑州到南京还有94bbbbbbbbbbbbbbb2016-09-26 11:37:512016-09-26 11:37:56Thread-0郑州到南京还有93bbbbbbbbbbbbbbb2016-09-26 11:37:562016-09-26 11:38:01Thread-2郑州到南京还有92bbbbbbbbbbbbbbb2016-09-26 11:38:012016-09-26 11:38:06Thread-3郑州到南京还有91bbbbbbbbbbbbbbb2016-09-26 11:38:062016-09-26 11:38:11Thread-1郑州到南京还有90bbbbbbbbbbbbbbb2016-09-26 11:38:112016-09-26 11:38:16Thread-3郑州到南京还有892016-09-26 11:38:16bbbbbbbbbbbbbbb2016-09-26 11:38:21Thread-2郑州到南京还有88bbbbbbbbbbbbbbb2016-09-26 11:38:21
0 0
原创粉丝点击