java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3075|回复: 0

java多线程售票实例源码

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

    [LV.Master]出神入化

    2040

    主题

    3698

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66476

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

    发表于 2017-11-1 17:47:27 | 显示全部楼层 |阅读模式
    demo项目名称:《项目java多线程售票实例源码》9 r& ], Q( L/ W
    java源代码:
    5 W, C6 Z' E7 f- `package com.javazx.test.thread;
      v& {( n- \) E) ?+ N
    8 p8 s! r9 C% Z. r$ q; s
    /**, C9 e) `; ^3 s. Z# |: X! e
    * 车站类2 U5 U% e9 Q5 g2 p# |
    */
    : q/ Y' o% A+ O; q0 P
    public class Station extends Thread {* y( h5 l. O; G7 ^: j2 \0 a
    8 ]6 b# B- a# ^+ @
        //构造方法 线程起名
    ( G$ q+ R3 f# N- e: q* V9 {6 o
        public Station(String name) {
    ; [: b0 S" [5 N/ ?  h2 @        super(name);
    3 c8 T9 L% o. h& f6 R
        }
    9 q& K8 t; N* e  t3 C9 ~" ~, g
    , s; m1 J8 M  M7 i: u    static int tick = 20;//票总数
    7 t8 r, ~* {& ^/ p
        static int step = 0;//当前是第几张票
    ! m% F- y5 W1 y5 a
        static Object ob = "aa";//锁对象 随意起名6 S2 Y7 y& Z2 i6 ~+ g4 N6 I

    # O3 ~5 l" u; }& y/ E
        //重写run方法) D2 W. N3 N5 |( T7 ^
        @Override- L  ?- b% G/ m0 m
        public void run() {% w! E) F4 C; L/ l" _6 @
            while (tick > 0) {7 q. j; w" N; L) D% t
                synchronized (ob) {
    : ]1 p$ A9 m. w* U6 g, ]                if (tick > 0) {. z2 M! y, X3 U4 ]% L5 z
                        step++;4 {% P; ]& o/ X9 T1 S; U
                        System.out.println(getName() + "卖出了第" + step + "张票");* c+ Y# Q# ]5 e2 P+ {: Z& w( R  Q
                        tick--;5 V+ h; l+ o: @0 F: \
                    } else {9 D5 y1 u$ c1 Z! Q" r- T) `. [% g
                        System.out.println("无票了");
    + I5 [2 I  O  p6 }, z
                    }1 u1 j8 O7 L; {, Z
                }5 c' K) ]4 t6 x/ e8 _
                //每卖一张 睡1000毫秒
    : X. [8 K! D0 Y, z, G* O
                try {' z! T1 x! ~% j4 |3 R% N' `! s
                    sleep(1000);
    " ~# M, m9 w) S7 k7 ^! ^  |" t1 \
                } catch (InterruptedException e) {6 \& f. v: T3 r9 E
                    e.printStackTrace();! A. B& d- ?/ f$ _; c6 J8 p
                }' d$ u7 t. j6 w$ e! i
            }
    ( p9 R! V# L/ G  g( K    }4 }7 M) d% \' p4 r. Y# q' Y5 ^2 ^5 f) Z

    $ e' c; J  e$ d5 z- g) ?' a}
    % t8 U9 t# I  K$ @; B& {0 l8 r' t, p  Q. P* o

    2 g# X5 P0 E8 _' w1 qpackage com.javazx.test.thread;) @$ z( o1 ^/ ~, D

    2 H6 f/ k; P4 o7 e" W
    /**
    * c# c; t" t$ z" {9 q7 j
    * 窗口类) D; \! s2 W+ v0 U( L
    */3 p( y9 C0 g0 r; d' W! ^
    public class Windows {
    ; C( I8 v0 h$ L    public static void main(String[] args) {
    - G$ U4 C# O. C! T3 x        //初始化三个卖票窗口7 T. S8 P( b% N% x
            Station s1 = new Station("窗口1");
    4 R' ^1 F( G: ~" E! {0 w
            Station s2 = new Station("窗口2");
    ! h7 Y3 k0 U0 k- l
            Station s3 = new Station("窗口3");, S! |' P3 n* g, }8 \
    : ?$ {7 H4 Y" ^* y
            //三个窗口开始卖票) m  j- t0 E( Y  a# P& U' Z
            s1.start();0 \2 S2 E. X' F) ~$ V
            s2.start();3 l: a- I9 G6 k% J0 {
            s3.start();3 S' Z* J6 l. o- {
    8 ?% Z2 h( B; s
        }
    + O2 `. Z, s4 S; \$ Z}5 q( q8 f8 g$ b! I- o& _7 y

    7 X. b0 v$ h: [' M. M) x  t/ z, X) J& r4 }2 Y/ R  o1 f$ W
    运行结果:7 d0 I( \( H! W
    " H* B5 R: x. Q/ k  k+ a9 c) X# v0 e
    窗口1卖出了第1张票6 y; i1 q5 e7 ?6 x2 u% x- b. C
    窗口3卖出了第2张票
    3 V) d! Z) F* l2 b$ ~$ ?  v8 l; v窗口2卖出了第3张票* c! W! n' [' R. q5 R3 |% X
    窗口1卖出了第4张票
    8 f4 z. H$ L. ~; @' H5 ]; v窗口2卖出了第5张票# u. C$ h, k4 R$ u( ]& Y2 ~5 t* l
    窗口3卖出了第6张票
    ( S% [6 \7 G) p! B, W窗口1卖出了第7张票
    . f+ E9 m' ^! q" w窗口2卖出了第8张票
    2 @8 w0 c9 u2 C+ s4 b3 M9 i窗口3卖出了第9张票1 {4 F3 a6 P  Y* D* {* g1 u  O
    窗口3卖出了第10张票- @% T. {% S# h  t) A
    窗口2卖出了第11张票* x; z+ x6 J; m
    窗口1卖出了第12张票
    , A" ^+ F; U! |1 [' q1 l" j( T窗口3卖出了第13张票
    0 B7 u5 c2 A6 {6 j窗口2卖出了第14张票
    - ~/ H% U. C4 \0 |0 F窗口1卖出了第15张票, A+ y* Y2 |% @( H
    窗口3卖出了第16张票
    7 x- t4 t: C! U窗口2卖出了第17张票3 ^5 @8 ^# G) v# T. ]' g; |
    窗口1卖出了第18张票
    8 o3 y2 \" t9 y/ }- x, M窗口3卖出了第19张票
    " L6 f* L) \) w5 f6 v% V* |窗口1卖出了第20张票+ J* z: n5 ?# Y( {$ Y. Y
    无票了! E1 X2 Q' i# q) T) r# K

    + k4 w* P! Z. F8 w! Q# R/ u& @5 `4 m8 Q7 K& a; K  I8 k
    0 ]8 k' ]! K0 X3 o9 c* _! L& T% h) ^

    % d1 {6 S( @8 p' B. e# D8 p
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-1-22 14:57 , Processed in 0.589288 second(s), 33 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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