找回密码
 立即注册
查看: 448|回复: 0

java多线程售票实例源码

[复制链接]
累计签到:5 天
连续签到:2 天
发表于 2021-8-14 16:10:01 | 显示全部楼层 |阅读模式
demo项目名称:《项目java多线程售票实例源码》
java源代码:
package com.javazx.test.thread;
* y$ p" U1 Y" k) Z2 r. E9 A# \
/**
* 车站类
*/$ w/ J6 }* O, q. I5 p
public class Station extends Thread {3 _' G) S" |+ ?5 b' K

    //构造方法 线程起名- K5 ~0 [- g1 C) u
    public Station(String name) {+ ]; M: y$ D2 Q
        super(name);- S( c% G5 m8 B1 u9 r# b
    }

    static int tick = 20;//票总数
    static int step = 0;//当前是第几张票& W" C: u/ J( Z. ?" Q) e/ J# B
    static Object ob = "aa";//锁对象 随意起名+ U( Z8 ^$ v* B% G/ o. i+ _

    //重写run方法5 S3 A6 {9 w1 B4 y: @- g
    @Override3 W; G( M7 V4 p! n2 P* e
    public void run() {
        while (tick > 0) {
            synchronized (ob) {
                if (tick > 0) {
                    step++;; D* J/ S1 K- U9 g
                    System.out.println(getName() + "卖出了第" + step + "张票");" @' D  p4 A- O  h1 d' t  `" D
                    tick--;
                } else {
                    System.out.println("无票了");
                }
            }
            //每卖一张 睡1000毫秒
            try {2 c( f/ ?2 R% ~6 d1 A
                sleep(1000);  g7 g9 o! o/ E! Z! u
            } catch (InterruptedException e) {, e  p( _+ q0 z/ a
                e.printStackTrace();( r6 @- f0 m7 e$ ^3 n
            }
        }
    }$ \  L: w9 G! x$ i& a- c
7 G# q$ H* s$ s
}' @- E* o( I' @
. w. P9 `1 E1 K
2 M( k8 v) Y! W
package com.javazx.test.thread;
2 M3 q% ~/ F) N0 }8 C$ e- _
/*** l+ H' j, r- o0 k% |. R; s! w8 W
* 窗口类  _  n  l! H( n# d
*/5 Z  Y5 k6 Z1 t; O+ N6 Y
public class Windows {$ O$ `4 G3 _9 X: h2 n
    public static void main(String[] args) {
        //初始化三个卖票窗口
        Station s1 = new Station("窗口1");
        Station s2 = new Station("窗口2");
        Station s3 = new Station("窗口3");' N$ o5 t( ^3 l3 X' X5 P  F
& V7 [& K$ S0 {3 z9 e+ w- @
        //三个窗口开始卖票* V3 Y2 R" B3 k3 o' K4 A; w
        s1.start();7 E! N7 G& F) K5 E* l5 N2 M0 p5 J
        s2.start();
        s3.start();6 c7 E: k0 p" @' M$ S3 ]

    }1 y% e/ b& U2 Q
}( d8 a5 R& \1 `2 Z# t" B# j( K( p0 t1 d$ y2 V

) D% P) n' d7 P
运行结果:
: ~# G6 e) _5 F: L
窗口1卖出了第1张票
窗口3卖出了第2张票2 i6 E9 l! q5 G% t8 g
窗口2卖出了第3张票
窗口1卖出了第4张票
窗口2卖出了第5张票! q! N" p0 {& G* @
窗口3卖出了第6张票& A. L( @; s; e
窗口1卖出了第7张票& I/ F, J* O2 h' F  F
窗口2卖出了第8张票
窗口3卖出了第9张票
窗口3卖出了第10张票
窗口2卖出了第11张票$ p- A1 G" `% G
窗口1卖出了第12张票0 m+ c+ e3 F% [& s
窗口3卖出了第13张票
窗口2卖出了第14张票
窗口1卖出了第15张票% w1 ?. z! O" {! U; I" A* x' ]0 [
窗口3卖出了第16张票
窗口2卖出了第17张票
窗口1卖出了第18张票: T! {/ b) g  h( G; i  Z
窗口3卖出了第19张票
窗口1卖出了第20张票8 w9 D) x+ _) Z- a1 {' `6 j
无票了  h) Z
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

点击这里给我发消息

QQ|小黑屋|Archiver|手机版|一路学IT论坛 专业视频教程网站

GMT+8, 2026-7-10 23:13

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表