java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3139|回复: 0

java多线程售票实例源码

[复制链接]
  • TA的每日心情
    开心
    2021-5-25 00:00
  • 签到天数: 1917 天

    [LV.Master]出神入化

    2093

    主题

    3751

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66773

    宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2017-11-1 17:47:27 | 显示全部楼层 |阅读模式
    demo项目名称:《项目java多线程售票实例源码》8 L2 E3 Q2 l! v% U4 ~  ]: L
    java源代码:5 _2 _" d8 N: U1 q$ U( \- U
    package com.javazx.test.thread;
    ( ]. T  W+ G, l8 q# L
    ; a, q4 |8 F9 ]3 ^- h. W' i, y
    /**
    % U  e; h. @0 b8 X6 v- U/ D
    * 车站类
    6 M4 R( S* D: w# ~$ S2 ]
    */
    4 z- y9 X* ^& F' e" E
    public class Station extends Thread {/ W: P3 p2 ^- U5 P. p0 [

    ( K' v5 y* K6 ?% q    //构造方法 线程起名( J4 M. D  e: a: y3 `8 G
        public Station(String name) {4 T" n4 Y; C4 {7 d, y0 D
            super(name);; L3 V" h3 q* C/ M! ~  R
        }2 D* ]# \  F( a6 |2 H

    8 n# C& i5 S( R9 o    static int tick = 20;//票总数
    6 I: Z3 T1 l+ p1 y
        static int step = 0;//当前是第几张票
    * _' y' t9 C' c) O  Y( l$ r# e) `
        static Object ob = "aa";//锁对象 随意起名
    - u8 A! A: [& x, b+ ~6 U) X. M
    " h! M7 |3 G( v% T
        //重写run方法% ]' X3 G4 c: h; p- K3 T; O
        @Override; Z$ D% \" E" I: a
        public void run() {
    6 o; r" h5 W2 `* s  @: \7 @        while (tick > 0) {6 F) m/ k8 ?# P7 Y
                synchronized (ob) {7 a) z' O  x6 M& J1 A) w" n4 m2 H7 J& I) K
                    if (tick > 0) {1 Y- v6 E( A. a0 m5 [% R( C
                        step++;
    ' _2 D5 i0 C: C
                        System.out.println(getName() + "卖出了第" + step + "张票");
    . r- q1 |5 j6 i2 N( e
                        tick--;8 H! f, `2 X7 t3 O3 ^3 F$ i. R' q
                    } else {
    ; G& I1 m% W5 o8 W8 Z                    System.out.println("无票了");
    7 T' o* r( A4 K+ T0 f# Q& P+ s! J
                    }
    . C5 @# C/ z: T- b* v0 G            }
    - d) p  j5 h) E. q$ {            //每卖一张 睡1000毫秒
    " F  J8 J8 k7 s
                try {
    9 N( S8 t) U! @4 J8 Z                sleep(1000);% B4 p- N; \6 A! z; A
                } catch (InterruptedException e) {% {. F0 L9 \% k* i
                    e.printStackTrace();: |) u) v' _4 x3 z" ?% v
                }
    - `$ Y$ b, G" y9 a; D( G        }
    % U' K- {# k) O: O    }
    - |% J. {3 S' L$ S6 ~& F
    9 z* b/ z" K0 o2 h* K3 g8 K}  G" r2 a0 p8 O- O( u

    % J$ ^0 l/ U; T$ ~4 B
    # e+ c8 V8 {- Z, {, `package com.javazx.test.thread;* Q0 E2 n; J" t; |1 @; F
    9 v( K8 _3 T5 Q; Y& g8 O) S8 ?
    /**
    9 F- R9 c% O' p1 k+ `; G; j
    * 窗口类, g' ^" h  l# h1 p5 D0 A
    */, A" G, l4 S: v7 a4 Z/ W
    public class Windows {
    " g$ D2 [" }3 r9 K! t. r    public static void main(String[] args) {
    + ]4 K( l3 P7 L        //初始化三个卖票窗口
    6 `! i, C/ k( i% A2 {
            Station s1 = new Station("窗口1");& n: ~# t4 K. }% B! b0 D
            Station s2 = new Station("窗口2");7 z) A8 P2 q+ R8 Y  D! y
            Station s3 = new Station("窗口3");6 Q/ [* U0 D0 n% ], }6 z- A" M
    " s$ u+ O3 N! \! P
            //三个窗口开始卖票3 j3 E: s, K2 ]0 P) H' B
            s1.start();3 r3 z/ d1 [$ {0 d* I
            s2.start();$ h) i, n/ D0 W
            s3.start();
    7 t3 W: }- s% ]7 i3 p+ P2 h

    ' S+ @2 p+ V- {1 i( W, c. \5 y
        }$ G) z; d+ U% R" G! s
    }% S8 K, B: R5 N
    4 A* E8 U1 b! ~* C7 J9 E! _" P9 }
    1 a' ~+ u/ |; f3 u* A
    运行结果:7 _3 \( N3 X1 a& u, U

    3 |0 j7 s8 p5 _4 E! a6 A" h窗口1卖出了第1张票$ w& q8 u1 g4 n
    窗口3卖出了第2张票
    . r$ q* Y$ i( x. O" c, P" |窗口2卖出了第3张票
    ( R1 I5 ~' h" G9 S0 S5 q窗口1卖出了第4张票. Q- d6 t- b* C8 M& V
    窗口2卖出了第5张票
    7 t" C9 ?) M8 L, B0 c窗口3卖出了第6张票; G! D2 D) u+ j3 {5 f3 L1 B4 q2 A
    窗口1卖出了第7张票; Y5 c6 C) `* }, W, I
    窗口2卖出了第8张票
    0 F+ ?$ y# j$ k0 Y0 K窗口3卖出了第9张票. p( N6 e# ~# _  g, u0 _5 f
    窗口3卖出了第10张票, b2 Z6 y. U9 t) |
    窗口2卖出了第11张票
    6 S! o5 w+ Y* r' ~7 Y窗口1卖出了第12张票: {! e9 b2 M/ R- w' B5 K5 S
    窗口3卖出了第13张票* U6 S* s) r6 v/ s# P4 W3 y
    窗口2卖出了第14张票8 e7 R: r6 p2 }# S4 o/ V: m1 U
    窗口1卖出了第15张票
    ' K: h/ _& _# V* q3 W窗口3卖出了第16张票
    ' J6 j+ m  \5 `# w: g窗口2卖出了第17张票
    ) |$ i' }! f7 f7 E7 m8 o窗口1卖出了第18张票2 w6 U2 y7 }, }  H
    窗口3卖出了第19张票
    0 w1 ]' ]6 O; q窗口1卖出了第20张票; j* y& {% Z* G3 g5 f* ]# U
    无票了, z% s" V0 {$ z3 Q3 n7 W5 t

    ' _. t+ M/ f8 j3 Q: \8 X8 O2 c! G
    7 c+ n3 O  o3 |6 z/ P6 |! z- f& D
    ( E; ^8 t& U2 r5 m& E! Q2 j" A
    ) d% G: E9 ^. T! @; H$ g0 l/ A
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Java自学网

    GMT+8, 2025-3-29 08:25 , Processed in 0.117285 second(s), 29 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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