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多线程售票实例源码》
    - R3 `- M, F- @8 S+ A' ^java源代码:( A6 O. C8 t9 A) c
    package com.javazx.test.thread;, S) \4 p. Y; ]; ]4 L  a$ I& q
    0 i9 l' e( r7 _8 [
    /**5 X/ P/ n) y7 V% |# D, S& U) V
    * 车站类5 _- M* j- y! a9 _2 q. J
    */
    2 j& E8 D$ p" a2 s
    public class Station extends Thread {
    1 L3 u& ?7 @: I
    ; ^" W$ X* k- [$ Y3 o3 v    //构造方法 线程起名, b- e6 Y7 V9 U0 T3 V
        public Station(String name) {
    6 n1 K* K, P% q4 |  _        super(name);
    & j  r0 Z) B  ?2 d! H% i
        }
    ' {. d/ E: k5 I: S5 v2 d+ ]- S8 |) U, X& F3 E
        static int tick = 20;//票总数" w5 ?7 M  H5 @7 ]# M, ^  I7 u
        static int step = 0;//当前是第几张票
    ( ~+ h3 p1 g2 Y& c5 z* X0 u
        static Object ob = "aa";//锁对象 随意起名
    0 R% U* K9 W4 d& c, |

      `" o( z3 q% f! l+ G- o0 o# p
        //重写run方法5 A- i, W0 P7 k: d
        @Override
    " p1 n+ i9 ~1 ]4 o: V1 X5 H
        public void run() {
    6 G2 v3 O7 P9 }( ?5 y        while (tick > 0) {
    $ Z4 h5 [, v" ^            synchronized (ob) {. y# j& c$ [8 O% u# s5 ~: x, s/ J2 ~2 q
                    if (tick > 0) {
    / `) w+ B9 @2 w2 ?                    step++;) v) d1 N8 X. w0 a  G' r
                        System.out.println(getName() + "卖出了第" + step + "张票");
    2 \+ O- L: L9 ^. @! L# g
                        tick--;3 q& W$ k3 M& S9 ~
                    } else {$ C) B: |9 j  h0 {4 |
                        System.out.println("无票了");, v, |! T& a4 \, O! p/ a3 o0 Q% ]- q
                    }) D8 Y' ~6 Z( J7 u2 y8 F" d: J! e
                }
    # j4 L0 N( c5 e" `( x# q            //每卖一张 睡1000毫秒
    9 e0 Z+ j9 e0 f. b/ W
                try {
    ( [+ Z. h1 c! C1 \0 I                sleep(1000);9 M4 E3 f+ E9 V; o  |
                } catch (InterruptedException e) {. [. n" ^) ^5 z; [" q0 ]! R+ Y( b
                    e.printStackTrace();( @4 V( v. X" C2 x! Z1 x" T
                }
    , V* a( d3 O8 U+ c! K* K0 {        }
    " i5 J: n1 I7 y0 Z; Z+ d9 p4 Z    }
    ' d  _6 F; [0 q9 D7 R$ q0 g
    2 y7 S8 W9 W; z, V# i}
    + ]& l. Z* y5 j$ e# o) u/ I: L
    1 {6 m0 d3 S, a
    ! b1 T; R0 e: G# |$ y1 apackage com.javazx.test.thread;
      ~+ C4 Y% l- l5 K
    $ j1 v, e0 M" k# w* x- y0 f
    /**- c) N% k$ e9 F1 S, l
    * 窗口类; g% Q  S2 e1 M" U3 k6 M& a/ n
    */
    5 c% f* a. P! s
    public class Windows {* O) T6 `9 b: E" W8 k
        public static void main(String[] args) {+ ~& A- p2 x" W4 ]
            //初始化三个卖票窗口
    6 j+ E: o8 ?6 N$ V4 Z) y3 \4 b
            Station s1 = new Station("窗口1");  O  N; k: m7 a
            Station s2 = new Station("窗口2");
    6 k/ ^* O) D8 U: z9 K
            Station s3 = new Station("窗口3");' x  ~1 ~1 s) y# c

    : f2 ~  q6 T5 Z- g6 M
            //三个窗口开始卖票; c4 \/ y2 s2 f( K- m+ w
            s1.start();
    1 N' X0 D3 b( P! w! J
            s2.start();
    ! y0 v4 b6 @1 u) q
            s3.start();
    ' M9 z* o& @; W8 M
    6 j7 [7 q* O2 f4 R
        }
    ' F* l2 J* v6 k8 z}9 [6 \- _2 i+ E
    8 U& M0 N% P7 _9 |; N& L
    / s! f. W) }4 C6 v9 E
    运行结果:  |5 b. \7 j$ g. o) I
    8 d; R) f2 ?. _  @. f% Y; a4 T
    窗口1卖出了第1张票
    7 {8 R! x) V& l" \/ f3 w4 c& I窗口3卖出了第2张票: X; P4 n3 P  i! j( n# \
    窗口2卖出了第3张票# f- {" H( k# ~$ X  ~8 _* r5 p% O: N
    窗口1卖出了第4张票' o' y; v5 V% F- {$ o) v! e
    窗口2卖出了第5张票
    9 ~3 _- P( G8 g/ k4 C& z窗口3卖出了第6张票( G* F6 l' Q- G/ I: X" y0 v& V
    窗口1卖出了第7张票
    ) E5 R: @6 I2 N* c窗口2卖出了第8张票
    ( j; n) {9 ^& n/ r4 B+ b窗口3卖出了第9张票" d8 l6 A. L( T. o
    窗口3卖出了第10张票
    + a9 |+ [" G6 r# \窗口2卖出了第11张票  g! ?6 W7 R4 W% y
    窗口1卖出了第12张票
    " j: x7 Q) V3 [% v* m* {窗口3卖出了第13张票0 f5 R. c/ r' o: u9 Z4 Y: q
    窗口2卖出了第14张票
    # Z! R( V: E0 P9 T( h. w9 N3 C窗口1卖出了第15张票4 b! [5 u, [1 C6 P3 B& D( t( u4 i
    窗口3卖出了第16张票  y( [, ?) Q& B% `6 u& B
    窗口2卖出了第17张票/ g! C& F+ B! z
    窗口1卖出了第18张票. ?0 f2 ?9 G- n$ W% j1 O
    窗口3卖出了第19张票
    / u3 b) b$ o7 X$ |2 c' _6 e窗口1卖出了第20张票! A( \$ ?7 a: a) F' O
    无票了2 q) W6 H4 |9 S' j+ F+ x
    ( ^! H  \4 C% I3 x" h

    5 F. P3 s; b# Y7 e: M, {/ K
      ]2 r$ h, A( ]3 l
    2 C) E- q( s: s# B7 o: i
    回复

    使用道具 举报

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

    本版积分规则

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

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

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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