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多线程售票实例源码》+ j' P4 e) [; F8 Z
    java源代码:
    " o2 A4 p* z2 tpackage com.javazx.test.thread;
    9 z% j9 K# `& n4 U" U) W7 M$ _: o- [
    ( P9 F% Z/ c, ~) S/ f1 s8 P
    /**
    , j. @' r& M( b& Z% W% `
    * 车站类0 `, f7 e4 s- N1 X; ~  f0 r- @9 \
    */
    " E5 y6 X- x' M4 G6 o1 h
    public class Station extends Thread {
    % ?* |+ E4 M6 o: X  N3 `8 v% L. t1 d4 H
        //构造方法 线程起名
    4 g& q  D: ]2 l: G& _
        public Station(String name) {( z3 X2 Z, W3 C* ?
            super(name);! m+ {/ t% x" B- Y
        }- I1 Q) t8 A4 e. Q& r

    5 g7 M% B1 y3 T    static int tick = 20;//票总数
    6 Y! Y* U! B) }
        static int step = 0;//当前是第几张票- W: {! |$ M( c( p- b1 Z
        static Object ob = "aa";//锁对象 随意起名
    ; R9 X. U3 N4 P

    6 i  s& r( y6 I. f! X$ h. I) s+ W
        //重写run方法
    5 W4 D' ~+ N5 M8 y
        @Override
    * y; ^0 H7 j. L
        public void run() {/ U7 o& R1 O- ~$ @9 x- ~& m: B
            while (tick > 0) {" i+ ^' }) a8 L/ P4 A* M) b
                synchronized (ob) {
    / S$ o! L. x# L! O! U; T5 B                if (tick > 0) {! G3 m  Z; g$ N# U" L3 \, Y
                        step++;
    & l7 U# X$ d; A) l9 {. q
                        System.out.println(getName() + "卖出了第" + step + "张票");
    " V4 M5 d' t+ L# F2 I
                        tick--;
    7 g) Y% y5 H# J( u
                    } else {' H( d% B+ X; O. c
                        System.out.println("无票了");
    $ Y6 E3 J  b  }, e
                    }! {/ g: j9 m# Z
                }
    $ H% P1 @% H6 r: g* R            //每卖一张 睡1000毫秒
    - w' N5 {: v1 X0 g0 Y
                try {
    + k5 H0 {- G, B6 {6 c6 Q6 z                sleep(1000);6 F  P( V0 F' |3 e1 b' J
                } catch (InterruptedException e) {
    6 G- }( b( p2 c  I, z7 h  _5 f1 ^                e.printStackTrace();4 j7 c1 d+ \8 `% K9 i; m
                }3 @* Y: Z- j, X) e" s7 M
            }
    9 b  b/ `. h6 s( z9 u    }
    3 b. \: j7 Z0 o. h) h6 `- n% _. ]% ^$ p" s
    }
    , G: ^/ k& h2 M6 \8 g+ i; o* z$ J' A8 c/ I5 a2 [9 o: W
    1 l' X- @: y" ^* q+ s
    package com.javazx.test.thread;
    2 V0 r1 u# S4 B1 O  x

    6 G. [9 y# A: L7 i4 W- r1 P
    /**, e/ X- u5 g( u# P
    * 窗口类
    9 }" i* t7 R1 B  S# C# l! D
    */8 w7 N: Y/ T+ W; e& H3 ~; w
    public class Windows {& w  l( P+ I( j4 e! P3 Q7 r5 N
        public static void main(String[] args) {8 y1 @7 U) s: ]5 o! l/ d) |
            //初始化三个卖票窗口$ d/ Q; X1 n+ z  s9 r6 h
            Station s1 = new Station("窗口1");( V  \# z4 h3 ^) o5 g
            Station s2 = new Station("窗口2");- Y8 b1 e" H8 w6 r. J
            Station s3 = new Station("窗口3");
    / H- h, a9 q; t) C2 q% a

    ' Z/ Z/ i! t2 b, j
            //三个窗口开始卖票
    : U3 j' A# R$ T9 J
            s1.start();
    4 w* n( f; |8 b; s4 i
            s2.start();: C# {! ?/ z: @" W4 |* B
            s3.start();
    * p: c: {' A! d; G2 L2 r

    ; \- }) P! S2 T9 Y
        }& \9 ~( ^+ o4 x& E- @
    }- U' p: x1 I. J3 |! E1 \* K
    6 y0 D5 r+ D- M8 S
    - F/ \- a9 b5 m+ A8 Q! i6 _
    运行结果:  y- d- f1 v) z9 a7 \" ^

    # R# c$ q+ T; s$ N5 W窗口1卖出了第1张票8 d" b2 |' k# A" U
    窗口3卖出了第2张票5 ?3 R  M$ K: w/ u0 F
    窗口2卖出了第3张票
    1 d$ j' k1 Q2 j* L! v- j! }: Q1 F  R窗口1卖出了第4张票
    ) T" w0 K  Z  j: u. R窗口2卖出了第5张票2 A$ p1 u  B! h8 m6 C+ p
    窗口3卖出了第6张票. M9 b: S# _( Z8 H. H6 x
    窗口1卖出了第7张票3 n( [$ g! f/ r" e* B+ d, ~" ?, J
    窗口2卖出了第8张票- W: i% w7 k2 ~4 }+ e
    窗口3卖出了第9张票+ }4 w; i" ~9 C: P2 A0 @6 }$ d; c
    窗口3卖出了第10张票
    ! x7 V$ W- @. d/ f5 {窗口2卖出了第11张票8 b6 g5 M- E' p+ s! ]
    窗口1卖出了第12张票3 B- ?& C- z8 `0 Y5 \$ d
    窗口3卖出了第13张票
    : @% h6 j& r* T$ }( ]% C. z窗口2卖出了第14张票2 \& ?$ s! h  G2 U1 w
    窗口1卖出了第15张票
      Q# c  O. g- t' h4 [; ^) G9 j窗口3卖出了第16张票* e. Y& Y% N% ^  o3 O& `4 Z
    窗口2卖出了第17张票2 D( E1 w6 T* s  p" ?1 [1 G
    窗口1卖出了第18张票
    1 f0 M( J0 U8 w' f1 n窗口3卖出了第19张票
    $ u& U: q' p( o% t. D9 }. G7 j窗口1卖出了第20张票
    7 ^8 f# g/ E. p2 l! v无票了4 z8 `: }/ L" D5 h( y+ o- t
    9 `- |0 ^( A3 Z' \/ @  |

    5 X9 @1 Z. @' g
      }  w" [; {5 ~: ]2 O# x- C/ a
    0 t4 R  |- i- x/ ^
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-11-21 20:59 , Processed in 0.245112 second(s), 29 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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