java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3025|回复: 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多线程售票实例源码》" O3 Z3 F; w- x4 R. Q3 s7 I
    java源代码:
    / p% @* p6 P( \  c. _package com.javazx.test.thread;
    # r0 p4 {+ Q, O% g- I6 [& P; D

    2 C) P; Z: p3 r# B  b
    /**
    . \( g/ [# G7 A
    * 车站类
    7 t# P/ g% C( l: L- a6 _
    */
    ' Q( ~8 D/ y# F0 i' h5 w- w+ ]
    public class Station extends Thread {
    ; g) E, F- Z& Z, G, W% [6 ]$ f, T2 w; i* ?7 u  C- z# N
        //构造方法 线程起名: C8 W7 t* p6 ^7 w8 u9 I+ h3 j
        public Station(String name) {
    ! i; ?" G* r) E8 U# _        super(name);
    6 k6 r4 ]+ \; H" {1 f
        }! w! ~2 @: Y5 b5 J" z9 J
    ( ~! s9 t- V! K. K
        static int tick = 20;//票总数5 ?4 I5 [* S' d7 w: f& q
        static int step = 0;//当前是第几张票
    ' p% v" N. r! E' n8 n8 J' h
        static Object ob = "aa";//锁对象 随意起名
    - l9 Q# [8 B) m% ?4 e  s+ l' E

    0 u0 K9 i3 U$ h, O% Y, R
        //重写run方法5 S# k+ w) I9 F, [/ @4 z6 k
        @Override
    " t; k+ r+ }6 I; U
        public void run() {
    2 U5 X1 \7 t$ Z        while (tick > 0) {
    3 m9 r* Y0 ^8 v            synchronized (ob) {
    * M& X3 u& k; r1 m3 f& m( {                if (tick > 0) {
    ; A. H! D0 _# D2 e" D                    step++;6 ^/ Z: k% g9 R# L) U& R. E9 N% b
                        System.out.println(getName() + "卖出了第" + step + "张票");
    7 d$ A9 q# a' S' P
                        tick--;
    , D; |* ^, \/ g" H3 I) c- z3 U" N
                    } else {) N8 F2 K( }8 W  \& V% l9 a! I
                        System.out.println("无票了");
    $ \% V2 X1 t0 |
                    }
    6 S- b" U& H4 S            }
    + b" g3 F$ Z3 O) N, A( Y* M            //每卖一张 睡1000毫秒
    ) l$ ?2 z3 P- x1 R6 B, L
                try {# m2 V0 v8 K' H9 U2 g& k
                    sleep(1000);* i8 n# d3 \6 R! `  R
                } catch (InterruptedException e) {
    $ {" |. S- {( e7 U6 e' C                e.printStackTrace();
    / M& X2 R) X" ^3 n
                }
    - b6 [: ^- N* X! J* j. t% v# ^        }
    5 l6 k& g+ a( Q6 l& i3 l    }
    6 M+ x+ }+ H3 B/ V# n* Z7 r8 J5 u
    }4 s' D! T" ?/ B6 ], A$ ^9 h4 E1 F
    ; t4 R" ?' o( l" ~! o9 j

    3 K: R' p6 C+ o3 a% m6 Q, mpackage com.javazx.test.thread;
      \% m: W) I  o) S0 N5 Z

    ! b$ j$ D' I; f* `' q/ a# @
    /**
    % M& z$ b) s# {
    * 窗口类
    / x2 u- m' v8 ]4 k. W
    */
    8 E# S( J% C( |, H* X1 ^. D
    public class Windows {
    ( h3 w$ ^# C: t4 V: B    public static void main(String[] args) {
    % T8 V$ g3 R) T2 Z" F        //初始化三个卖票窗口
    3 i* A- X' n2 y- a
            Station s1 = new Station("窗口1");. U) g' d6 O) O. `" L7 D
            Station s2 = new Station("窗口2");0 L' S& n4 \. y8 {+ n
            Station s3 = new Station("窗口3");6 Z& ]) W0 g6 P- T

    3 f. j! @' F# E
            //三个窗口开始卖票. K1 R9 u  L/ F, ^& L! ^
            s1.start();
    ( c7 s% C0 C/ a: Z, [! y
            s2.start();  W% V2 k& I6 j# f* f/ s& U: n( }2 g
            s3.start();7 s5 f$ M/ z! f: x; Q6 R, G7 M

    0 W0 m3 C$ ]1 n
        }
    ) {: J. I/ P% s4 o$ _}
    " N7 \) f9 q2 T- U; Y- v
    * `1 G1 x. l& d$ K$ |2 O
    , V& k9 ]! S4 g0 H5 ^+ o运行结果:* f4 P/ {1 {  y& q- ~" X1 j

    % r- d1 b! r6 a窗口1卖出了第1张票
    0 C3 I$ M9 j8 R5 \4 j9 z窗口3卖出了第2张票+ _/ b& a0 B9 w5 G) n
    窗口2卖出了第3张票
    1 ~. X( n8 D  @0 o$ f窗口1卖出了第4张票# o( m) N3 h0 o% y5 ?
    窗口2卖出了第5张票2 p: ^' }% n* l' O, S
    窗口3卖出了第6张票
    : x4 K- {! P$ Z1 C窗口1卖出了第7张票& `; m- o, x1 W9 i
    窗口2卖出了第8张票
    7 F6 h* r" f* N3 H9 W窗口3卖出了第9张票, F# ^2 h* n: g, b2 f
    窗口3卖出了第10张票
    2 ?. z$ X0 n5 s) ^6 s窗口2卖出了第11张票
    $ `% d' h8 {* D6 ^窗口1卖出了第12张票; x+ G+ m; A8 V5 x
    窗口3卖出了第13张票/ c- N: _) W' C5 r
    窗口2卖出了第14张票6 q% P2 ^3 u8 y8 Z% m3 `2 F
    窗口1卖出了第15张票
    $ G( s8 h; r. w$ e) y% }窗口3卖出了第16张票: W" Q) j7 f) t, @# u( \
    窗口2卖出了第17张票
    1 Y. a* \( l1 T0 y7 J  L/ S窗口1卖出了第18张票  o& V' r6 k" N8 e; z3 ^
    窗口3卖出了第19张票& m1 {4 \  T! v- Z
    窗口1卖出了第20张票  A9 p6 c* T: D$ j* V
    无票了  [# U$ i& ]; o  i% {! m
    . Z3 {! B6 r4 T( |

    2 r% R( R; I' l( H( i5 i' G& m0 R! a8 j1 T# Q: |, s
    ; {% ~' Q/ E5 e! Y' J4 Z8 N* I$ y" R' v1 _
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-11-23 20:28 , Processed in 0.120947 second(s), 30 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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