java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3022|回复: 0

java多线程售票实例源码

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

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66345

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

    发表于 2017-11-1 17:47:27 | 显示全部楼层 |阅读模式
    demo项目名称:《项目java多线程售票实例源码》
    - r- y1 @$ A- m$ C8 F! B; ^java源代码:1 ]$ {  b( H" H" y+ n% V" n* s( D; A
    package com.javazx.test.thread;. V! r# `& D8 d& L# i7 b6 b0 X

    , s3 F* ]  ~- S8 L5 z
    /**7 T0 L7 ]. F, N+ [; x8 ^
    * 车站类
    6 A0 o4 L# W- u, n9 q; H
    */  h% D1 C9 }6 K) U
    public class Station extends Thread {1 |3 s) p& y, u7 U9 ]% I' w
    0 m& p* V  I8 k/ H
        //构造方法 线程起名( H, |1 E7 A) _% z* `1 R! H! ?
        public Station(String name) {9 m1 d1 r+ H- P( y1 D6 d
            super(name);
    * e9 L7 ]: V0 p, v. |
        }+ l0 E: v# e- D9 D  n' z
    , U6 R' d3 v$ J8 I. m
        static int tick = 20;//票总数) }" M1 N5 I) a' J7 k# {5 e
        static int step = 0;//当前是第几张票# R" V% i! j& w( t5 D- |' C
        static Object ob = "aa";//锁对象 随意起名/ e, z2 v& i6 ~+ o" O. W' U- a# {# y
    & h4 I2 k6 ^- r, N% R( \5 A
        //重写run方法! u) T- n" {. K. T+ ~3 ^
        @Override
    ( m- s6 W3 W# c# o$ |( {
        public void run() {! i3 F! [- N9 u8 K" O' n
            while (tick > 0) {! h- ]0 ^- A) L9 T4 w: F
                synchronized (ob) {( ~7 z$ }( W0 Y7 P
                    if (tick > 0) {1 D3 W. `1 m+ V- e9 M$ g- I" U
                        step++;+ u2 v  f1 ?- q( J% d% Q  t4 V
                        System.out.println(getName() + "卖出了第" + step + "张票");6 m3 _/ m" s1 y
                        tick--;5 N) {9 i7 o- w5 Y  W, h9 q
                    } else {
    ' C: [3 l! w% P+ D7 O0 h* D' ^                    System.out.println("无票了");
    8 o/ G% m0 f4 K, C, x. A# }1 _
                    }
      v- T# r2 L* U1 X, N7 k' l* t            }! r) R; p4 a' ^6 T5 |0 _
                //每卖一张 睡1000毫秒
    ; w7 p$ o, ]% F" ^# m# }
                try {
    : |1 K1 L" r" u( `# C                sleep(1000);% z5 i: s0 u! e. \9 v
                } catch (InterruptedException e) {
    7 {3 p! Y9 c9 q2 s                e.printStackTrace();
    ; T' p3 |' w7 x
                }3 {- W) f' w) l
            }. z0 E" |6 \$ S% B' s
        }* z! q4 Q( ]& i( Z/ P1 p
    9 w0 J6 j1 S8 B, ?8 T' G
    }
    ; w8 b: P. d7 e% e# A6 k3 u6 X3 e' p; M$ t6 W9 N! q

    ; _4 x  \2 Q7 t: `  R4 l9 @3 ?package com.javazx.test.thread;
    6 _% O; Y" a4 d  J8 s

    ; P% T! L6 `) H1 X
    /**
    7 I& Z. \4 U0 `0 J
    * 窗口类
    7 m4 ]  ]( `; s, X8 V) S
    */- x6 X0 o& F- F* @: Y
    public class Windows {
    5 \# V; C2 Q/ D: R    public static void main(String[] args) {
    * {8 N/ ?* ^  c! d5 Z$ B% v        //初始化三个卖票窗口
    ) r) ^# v# H& [, V9 Z
            Station s1 = new Station("窗口1");; W9 x* o* u4 p7 Z, n" k0 Q
            Station s2 = new Station("窗口2");) s. x4 O0 k; u
            Station s3 = new Station("窗口3");
    4 K* `3 X. N2 Q4 ?! N

    ! j5 W( r& f( J% f8 H) q& r
            //三个窗口开始卖票
    . y, X3 ^1 Y, A% R7 R4 i# o' W
            s1.start();
    # S' E' s8 E0 c$ a1 p! I5 U
            s2.start();
    1 h( x) L, D/ R4 i, b. U% e
            s3.start();
    + h' ?0 w8 e6 i+ n+ @: u! C$ q: @! E

    2 W4 ~4 N9 u& d  ^2 L% g
        }2 J2 h' Y- O' \% K$ a7 |
    }4 W  p0 c3 _  Y
    * G: q( k: v- n' |% u2 }9 R

    ! F* ?2 b& Z& g% Y: F* d9 c) O运行结果:
    ( f2 ?6 Z1 n% h7 V$ `: P7 a1 z
    窗口1卖出了第1张票+ b' x6 [; ^8 R; y3 ~
    窗口3卖出了第2张票- Z: G3 }% ?- \8 L* j
    窗口2卖出了第3张票7 x5 I) k  x( A- r3 f
    窗口1卖出了第4张票
    3 _3 y6 i" B/ W窗口2卖出了第5张票
    / W0 M6 ~' V( w5 P/ i窗口3卖出了第6张票
    3 c7 V2 E- M  X. D窗口1卖出了第7张票
    - j, q/ y" |: k窗口2卖出了第8张票* T1 a# Z) R& Z6 s. q& @
    窗口3卖出了第9张票, _! Z- p; U; p  f+ D
    窗口3卖出了第10张票' k6 B0 S# w/ I5 s; s+ ?& X
    窗口2卖出了第11张票
    ! g- X% X" ^. k0 {" u. [4 i  O! @! L窗口1卖出了第12张票
    % {& o$ d0 s% {$ C. J窗口3卖出了第13张票, n7 u* J% b1 D* f* P+ L* F
    窗口2卖出了第14张票" V  h2 t1 {6 s, W( Y" {% u
    窗口1卖出了第15张票' E4 |# D, m0 R% c2 t
    窗口3卖出了第16张票
    $ P& H* |1 O: P- H: j9 d! Z窗口2卖出了第17张票
    " M0 ]/ h# Y9 Y窗口1卖出了第18张票
    8 h2 D! ~% {" r8 v2 f  E窗口3卖出了第19张票. C9 L4 K1 t% p2 G7 n4 k& w
    窗口1卖出了第20张票
    5 L, w6 e9 m" j7 r) w' S% S无票了7 p7 ]2 {' s5 Y# A

    , o; s1 r  K8 U( G5 Y5 f$ ~6 X% ?) S- t5 [# _2 ^' V

    ) ]8 o0 G  _: g3 ^% F* L* ]: T
    , j5 B* z  |' O& k* l! U0 f) q4 f
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-11-21 21:29 , Processed in 0.110926 second(s), 28 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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