java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2879|回复: 0

java多线程售票实例源码

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

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66123

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

    发表于 2017-11-1 17:47:27 | 显示全部楼层 |阅读模式
    demo项目名称:《项目java多线程售票实例源码》7 J0 {8 |* K; x! l4 }5 X) q
    java源代码:& w. P6 q4 T, q$ E( I
    package com.javazx.test.thread;9 C/ J! E$ T  ?/ T0 A+ |# l2 H4 G

    ) J" U5 B  a, p3 v0 U7 t  z
    /**2 l/ S0 s1 d) g& Q
    * 车站类
    6 E4 n: [" w3 C
    */
    & a* ~/ b$ X7 C1 n, `
    public class Station extends Thread {
    % Y2 _) a0 Z7 }+ G' t: a9 @/ ]" Q) ?6 l
        //构造方法 线程起名* R' I# ?0 F5 S! l7 B3 X
        public Station(String name) {
    7 \" l, i& f  z1 P' K8 T6 T        super(name);% |  `  H: ~! E& [2 ?( \( S
        }( V4 M7 F; _- k) ~* M& P# D
    4 u) a- ~& g7 j% C+ L6 {  M
        static int tick = 20;//票总数  y( _- `: d. b( v( }, |
        static int step = 0;//当前是第几张票& S0 ^3 f8 C) z/ w2 e) a
        static Object ob = "aa";//锁对象 随意起名
      j$ y+ z9 q% H: p
      S, k  R& x, Y& ^9 ?
        //重写run方法9 |8 d8 y# ]- c
        @Override. ^' C: g6 E8 r; r% d
        public void run() {7 V* z9 e2 G* g5 e/ c+ |8 ?! B* y
            while (tick > 0) {
    ! o4 q" p' h: c1 X/ f            synchronized (ob) {9 ]4 b3 _- L1 n# n
                    if (tick > 0) {. P& t# W: l" n0 R  H2 @$ @: d
                        step++;1 Y' W% C5 s# K$ p  M7 a6 F
                        System.out.println(getName() + "卖出了第" + step + "张票");
    * q1 z8 ^. E" V
                        tick--;9 Z7 v3 ?$ f8 Y
                    } else {; ^# e9 T, A( v- M
                        System.out.println("无票了");
    $ a' |$ r4 C3 t7 a  V
                    }4 O8 P" I; u4 [2 Z/ x
                }5 M/ Y* i/ \. B' O
                //每卖一张 睡1000毫秒
    8 c  ^6 U) F' s0 v1 X+ `2 P
                try {
    8 e+ l: b  g: I                sleep(1000);
    : g4 B- e# c$ h! b, x# n
                } catch (InterruptedException e) {
    4 a5 E, M" n. k% A7 e! B0 w                e.printStackTrace();. N3 X+ M( e9 P2 |; t; I$ X. c
                }& ]' N0 F; y' p
            }
    7 b% E/ e6 U4 Q( E( |: I    }! j& `) m( Z! z4 N

    % Q3 k4 a' D# p5 _6 Q& f8 G}2 o8 X) r) j% u% _1 ]
    $ m4 t* ]: p1 X! o) I

    & A' q+ u% e* {$ Ipackage com.javazx.test.thread;
      G  G$ h& i. [

    $ X9 \3 M* Q& b
    /**
    : s0 `4 \8 E. B/ `2 B* w# l" d
    * 窗口类
    # P  O, p, }% T; M, a1 C9 B* b
    */1 `" m: q. p! X( _9 w4 `# Y
    public class Windows {
    6 J1 q! O( R. e% n% ?    public static void main(String[] args) {. {4 [7 u; A* ?. W* C) d4 Q
            //初始化三个卖票窗口& j' {' q- Q+ V# s" \
            Station s1 = new Station("窗口1");
      R4 M1 p2 t! ?0 d! n
            Station s2 = new Station("窗口2");/ u& g  @7 E3 Z9 [& u# }7 }
            Station s3 = new Station("窗口3");) l% W$ z* p8 x7 v+ @
    / Q5 I' O1 H& d
            //三个窗口开始卖票
    5 @$ V3 D* E6 d4 P7 s
            s1.start();9 K( ?# X: ~# h+ Y
            s2.start();
    % h0 ?0 y6 \  c) l1 F
            s3.start();' I0 `* C- w& w

    7 ^6 Y  t# D* a) I& z
        }
    9 O! B5 l0 M8 v1 ^( T7 ^9 I6 m, Q}0 O7 C) m8 Y: h" u; k' ]+ \3 Z  @
    ; Y  m, W  E/ K; [
    & Y' j; L+ f8 B( u: `( t- D
    运行结果:
    + {3 }% S* Y, Y8 o/ X& V' o# ^$ ?1 ^% C4 B' N# \' f, [! {
    窗口1卖出了第1张票
    & v" Z  q+ {8 |# i0 _: h窗口3卖出了第2张票
    / a+ t) m+ y3 X, P' d: ^窗口2卖出了第3张票
    : h: @! s$ [7 x  p: h' g, \窗口1卖出了第4张票% G3 Q( ~/ i- O& D9 Q" s
    窗口2卖出了第5张票! h$ d5 @. o, ~2 D( H9 ]& i* w& c
    窗口3卖出了第6张票
    ( q% u  g$ k8 d& a4 i窗口1卖出了第7张票
    . m: t5 j* Y6 a  n窗口2卖出了第8张票. B3 b$ q3 v# q" u2 ]! ^
    窗口3卖出了第9张票
    , R+ P; j: d9 g窗口3卖出了第10张票4 W* `  B! y8 ]1 w' w# @; h
    窗口2卖出了第11张票1 ~2 y( z7 L! a# s
    窗口1卖出了第12张票' |' N# y+ h2 q- J$ q3 S
    窗口3卖出了第13张票, e& e) o9 o) _9 V
    窗口2卖出了第14张票# \7 E% e3 H% p5 e3 `' d5 E
    窗口1卖出了第15张票5 d- I2 k* G6 R6 ?. o$ i# C
    窗口3卖出了第16张票
      T2 S4 U2 ~/ e窗口2卖出了第17张票
    ! g& I1 ?1 h' Y窗口1卖出了第18张票- D% {6 s, s$ k+ @+ E9 C" }! i( z
    窗口3卖出了第19张票
    4 ?6 [+ K2 Q' z6 C窗口1卖出了第20张票
    $ A1 \9 b5 Y' |# Z, Z无票了
    ! Z4 [7 ~6 u* Q
    + \# M% X2 x+ G$ {6 G9 t7 @3 q+ o) W
    - x/ b! `. ?  G& ]; U( X* w5 ?1 k* O" k7 a3 l1 R: g! S

    % Y3 _+ r! A" H7 n8 y. l. N' F# y
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-19 02:31 , Processed in 0.069846 second(s), 29 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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