java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3097|回复: 0

java多线程售票实例源码

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

    [LV.Master]出神入化

    2062

    主题

    3720

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66592

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

    发表于 2017-11-1 17:47:27 | 显示全部楼层 |阅读模式
    demo项目名称:《项目java多线程售票实例源码》) }3 {+ @7 b( p' y0 ?
    java源代码:
    - e3 J2 [- }$ S. n6 Ipackage com.javazx.test.thread;
    & f# H! j& z* Z# t

    ( C3 F6 w1 ^( |, R4 @& a4 ]/ w
    /**, m& z  ?- o. Q* w8 |( [
    * 车站类
    7 C$ Y$ [$ c" ~! ?4 B9 D' N
    */6 {. q) a, ?8 h8 h0 w, {, `
    public class Station extends Thread {
    5 I- O9 k, b1 J6 V6 k3 ?: [+ I  C" y% q: \7 D2 v5 k8 _
        //构造方法 线程起名
    8 L# e8 h* b$ q  Q, z$ w4 S  q
        public Station(String name) {
    0 B. r/ N+ ?6 |: s6 E5 j8 d4 {        super(name);
    $ D5 [8 ^2 f$ z9 Y
        }
    6 A: T( z/ G9 g1 v/ `
    ; T9 Q  h* R$ N( s. ^    static int tick = 20;//票总数7 W- {8 R. j6 `" l" w5 ]0 i) E
        static int step = 0;//当前是第几张票8 A" T2 g% p0 \- U# i8 r, C
        static Object ob = "aa";//锁对象 随意起名4 o. Q" e- W& A3 r) v. p5 `8 u2 q

    - V2 I. N" q, ]. B4 b5 ], @$ b! X
        //重写run方法9 K, e) S( \: Z/ b7 `5 ?: y
        @Override; }$ o$ Q7 P9 N% l" N
        public void run() {
    5 L( |2 a% T+ S9 f- K+ I8 Z" m" V        while (tick > 0) {! I7 B4 Z5 _7 D  _
                synchronized (ob) {
    2 O) M: Z1 B9 U7 }' P* P+ W) L6 P- [                if (tick > 0) {
    9 E. h/ |. S* h                    step++;
    . V! Z$ z& k; U# b+ m% S
                        System.out.println(getName() + "卖出了第" + step + "张票");
    - D; j2 L$ ]: D4 B- q2 x& [. I
                        tick--;/ R5 Y) q4 c! g  ?2 _, m2 k
                    } else {
    8 F5 q& I, [* d0 d" A9 {1 t  S                    System.out.println("无票了");
    1 }% S# \4 Q+ L( @  j0 e
                    }* r1 x3 S" B4 o! D4 B+ p, ?1 R
                }
    ( `7 B+ b' {# i! `            //每卖一张 睡1000毫秒
    & z" ~7 G6 |8 O1 h
                try {
    7 \) c$ I: P: J                sleep(1000);
    9 l+ n8 z+ Z3 i( U4 x5 B
                } catch (InterruptedException e) {' F" e5 E% r' A2 M1 C* r
                    e.printStackTrace();1 Z5 j3 P1 a8 f, r0 j6 K
                }. {% P! w+ w: k
            }
      f! v  @+ v0 `) \    }
      x0 `7 l" t* w. x8 s6 d- E' K/ f' D% w4 A
    }
    % u+ C7 q& B  z& V* x1 ~% m$ k- |) \# w7 |0 b  a
    3 R: m: x0 |  U2 R5 [9 g; }+ W! z/ e
    package com.javazx.test.thread;
    " d: H5 P/ f" j6 {9 `

    % k! t! a' H0 i# p7 S. Z4 m  V2 Q# T
    /**
    1 L( J' L# N! w  d' A
    * 窗口类
    , b- D1 {  G) t5 @& }$ @
    */
    7 Q3 n+ D4 `3 S; j! q- T( H
    public class Windows {" n9 B+ S' p$ n& W/ N6 E& C
        public static void main(String[] args) {9 @2 N, t8 K, W
            //初始化三个卖票窗口
    + t! d# e9 M4 n, A; H
            Station s1 = new Station("窗口1");
    # }. J6 B0 z! C( a6 L7 x' _8 m
            Station s2 = new Station("窗口2");$ m5 ~' m/ J% P7 R" x5 C. ~
            Station s3 = new Station("窗口3");
    & |. k3 {. j6 D+ @

    % N2 e, w. F- u# L& |. i
            //三个窗口开始卖票
      E, }! w  F0 u, q5 E/ _1 O
            s1.start();
    " q+ w8 ~  D0 j5 q3 e: `; k
            s2.start();
    ; q# F: z2 T: [9 B" t, C( V: ~
            s3.start();
    & G- X, T2 g& H

    6 d  w( T: o6 N+ _* l+ d
        }
    . x; Y! A6 |. a+ V5 a% x% w}/ }. F" @$ H2 `+ e2 Q
    ! N/ y$ g6 D. K. u$ `4 X8 Y4 b
    % h6 `( n) E4 t8 I7 l3 i
    运行结果:( g2 o1 p: s/ v3 E3 O: s

    ) @* c5 A# F+ h& S. G窗口1卖出了第1张票" M) u" n& |; ^9 f& b# t1 U9 k0 ?
    窗口3卖出了第2张票- h6 g( r; a6 t: u% H, f: s* m
    窗口2卖出了第3张票+ H8 ?' M( a& _6 x2 }- H
    窗口1卖出了第4张票7 q; l0 y2 c$ k
    窗口2卖出了第5张票
    1 h' S. l8 |- C) t; ~窗口3卖出了第6张票9 \" ], d% D9 G2 s! L
    窗口1卖出了第7张票& G( e  C8 N( [4 s# j& Z* U* B
    窗口2卖出了第8张票3 \2 p$ J2 I: j+ Z9 m4 f
    窗口3卖出了第9张票
    : P, Y3 S  `3 d, c窗口3卖出了第10张票
    # D  U( e0 I6 m6 I9 U4 E  H窗口2卖出了第11张票9 g( n( _7 f; @& S
    窗口1卖出了第12张票( a4 r5 I: j( G/ I& j
    窗口3卖出了第13张票
    # C  |7 d" B" ~, N* M  z" k: n; Y窗口2卖出了第14张票
    8 G: _+ B% R! O7 b+ l/ z窗口1卖出了第15张票3 g8 h- p/ j* e: ]/ X: d9 c; j
    窗口3卖出了第16张票7 [2 [; w- f1 ~1 H
    窗口2卖出了第17张票4 L  H: h& v& ^/ C" h' V
    窗口1卖出了第18张票4 d1 B% I' ^+ j  B4 ?
    窗口3卖出了第19张票  N% l# q8 n3 F$ H2 M
    窗口1卖出了第20张票5 [: F% y" W1 D6 p2 y5 ?3 X- ?
    无票了: l! P7 C% Q4 }7 }
    ; f! M' c; v  |- u* W* \
    2 k: m6 ]; c8 Y& @. z1 K% R

    5 [  ~1 K5 U7 s5 H4 E
    6 B6 t- S0 S: x, i/ }! }
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-2-23 12:47 , Processed in 0.139643 second(s), 30 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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