java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2856|回复: 0

java多线程售票实例源码

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

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66089

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

    发表于 2017-11-1 17:47:27 | 显示全部楼层 |阅读模式
    demo项目名称:《项目java多线程售票实例源码》
    1 E& {0 f% Q2 I+ q! A8 ^6 Ejava源代码:
    / N" W" X" @4 O5 R7 w2 O/ q4 \7 Wpackage com.javazx.test.thread;0 r) J& I& y/ R6 i

    8 H  O1 U) I4 `' r& Y3 {
    /**& O4 e3 ]2 Q& a) a+ L0 R
    * 车站类
    % r3 I5 P3 K/ l' O6 U* Z) n3 s
    */4 W; f8 {9 H$ n* w) W
    public class Station extends Thread {
    ) D+ k$ u: x) y  l, |& X2 q" g! n6 X9 V4 o- s! T# j" h! T4 U
        //构造方法 线程起名" L4 M8 P" {! e- U0 o* x
        public Station(String name) {* `. a/ R$ j. c% p
            super(name);
    2 E0 i/ Z1 m( M4 o9 z, j
        }
    " d, ~2 H2 i% s9 H& r
    5 q: c. k6 f7 [; V3 x    static int tick = 20;//票总数7 L5 F: r6 D' _
        static int step = 0;//当前是第几张票
    # n/ H% c9 I$ J2 Q- }. q1 |
        static Object ob = "aa";//锁对象 随意起名9 I; }. E$ a$ A) K+ J7 D- U( n' u

    5 ~) c% K' Q% T3 O" t3 i
        //重写run方法
      c3 g/ F, [* r9 x+ V# d; h
        @Override
    6 b1 U& c% V6 K
        public void run() {
    # q8 X2 Y) k) d/ d) L$ |- F, l        while (tick > 0) {
    * M! ~: i2 |  H  J0 l0 C            synchronized (ob) {% ?+ a2 v! A: N/ ^( j' g) r
                    if (tick > 0) {
    3 }3 t( `# I) }                    step++;
    + k/ Q  B3 X3 M; e
                        System.out.println(getName() + "卖出了第" + step + "张票");
    * r( F: A8 @7 v/ `: ~: |7 X4 ?: Z: K
                        tick--;0 t  p" Q$ r4 k
                    } else {
    - _- ~+ {$ o; f9 D0 E0 o                    System.out.println("无票了");; V" H/ p6 q5 v/ f8 R, h; G  J
                    }
    ' h7 }3 N9 N8 |$ \8 v* f            }
    ) W& c+ T( i; g! `% U            //每卖一张 睡1000毫秒
    0 C  [1 g" }, W
                try {
    # G, H: W% h4 m/ f7 P; A: ?                sleep(1000);
    - ~# I4 A- g4 p2 l. l7 j/ J  d
                } catch (InterruptedException e) {" |# r, j  |+ S6 ?; x# T6 d
                    e.printStackTrace();- d; S% M) {3 E) k; z5 c3 X
                }
    1 I, T1 `, i8 z7 J        }& p5 O5 i, D, O$ m3 C
        }. K4 ^4 m, `/ o9 z/ S

    , H9 S2 ]( B6 H3 d' Y1 F}& m8 _- G: q* G
    : L( V; h# b5 Z: V) C8 D

    ( n/ s. Z; r- T% L/ opackage com.javazx.test.thread;
    9 k5 |# U, h, `# r0 G
    6 H9 Y% N( @, H/ i
    /**
    1 s) Z3 W1 o+ U% C/ k3 e% o6 _
    * 窗口类
    2 D7 \6 G" I7 O0 r
    */1 O! U$ e* ]# N' {/ a
    public class Windows {  u! o# R, X( a( N2 t% M
        public static void main(String[] args) {
    % J+ e1 ^% i, O( q        //初始化三个卖票窗口7 H4 ?: z- t5 ?" r) h
            Station s1 = new Station("窗口1");
    ! D* w! X4 D- |8 `: H% ~; I; Z
            Station s2 = new Station("窗口2");: D* d% {2 h6 W. e5 k/ Y& L, c
            Station s3 = new Station("窗口3");& z6 r6 s) N; W; T5 ?- `0 L
    ; f! {$ _1 r& X# @( T( ?, ^* f  W
            //三个窗口开始卖票+ K" [' N8 O. Q/ F
            s1.start();
    ; B+ n- H9 g7 f& Z- y
            s2.start();* F. ~8 b8 J: {. c# @5 b
            s3.start();% R  c* ~: k. l7 _* t6 ]
    1 g$ g# i# v8 o; }% r
        }0 A; J% C# k( q+ Q4 {
    }& P! j9 r3 @) H" @: c
    2 V/ w( M5 Y  c1 |
    8 q) x3 I: L" w3 Z5 w( z
    运行结果:" e  e, @! r) A4 \! n3 w1 A7 a
    ! b9 F! J  j9 ]9 q3 n5 o
    窗口1卖出了第1张票  \. M, ?2 n$ J4 g' W* @. A
    窗口3卖出了第2张票* D) o; _  K0 Q! X8 H
    窗口2卖出了第3张票
    ( Q# `/ E8 a9 V, r窗口1卖出了第4张票
    & s6 |  e8 e4 k0 l窗口2卖出了第5张票
    % Z9 v) L& j# K) I7 {, J窗口3卖出了第6张票
    ! S6 O5 P- L+ M窗口1卖出了第7张票6 A" `2 E3 n& ]1 Z# q4 u$ V
    窗口2卖出了第8张票
    ( R; k8 N' V" y9 q8 j( P! o6 P7 c% ~窗口3卖出了第9张票
    7 X- N4 _% Q8 U1 t. J  q. b$ P窗口3卖出了第10张票7 a& }! i( Y, |/ K; A) N: V6 [* y3 y$ z" p
    窗口2卖出了第11张票
    ! V" {7 N( T/ l" |窗口1卖出了第12张票7 q9 O4 h9 Z7 @2 y# l; r  }
    窗口3卖出了第13张票
    + L& Z1 f0 H. j; q. M1 u- ?窗口2卖出了第14张票: k% B1 t: Z4 @8 V0 r  ?* X' u
    窗口1卖出了第15张票- w. j0 g6 _# J! r$ z
    窗口3卖出了第16张票! o- k/ @; D  T1 N: g
    窗口2卖出了第17张票' d3 `- j# b6 M4 @
    窗口1卖出了第18张票
    / D' b* q: H& w4 G% \窗口3卖出了第19张票
    ; H! q, m  k4 H窗口1卖出了第20张票
    7 u* p, ~" b5 k* ]* }无票了
    ' q+ {/ D+ E9 H5 _7 O* m* c
    ! q& a4 ]0 n; v6 ~+ N. E1 ]$ ]3 F( W: O2 a) b
    2 Q+ l  k8 r6 q- g- Y

    ' v6 L$ ?( Z( t+ R/ v
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-4-23 22:05 , Processed in 0.127269 second(s), 31 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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