请选择 进入手机版 | 继续访问电脑版
java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2831|回复: 0

java多线程售票实例源码

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

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66061

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

    发表于 2017-11-1 17:47:27 | 显示全部楼层 |阅读模式
    demo项目名称:《项目java多线程售票实例源码》0 z( p; l: Q7 w! f2 {* _
    java源代码:
    , [% i4 s% q0 P/ Q# R1 qpackage com.javazx.test.thread;
    , s9 A* q% k1 S3 E
    8 L; |0 i+ @6 j" z4 _
    /**9 M* b4 L* b/ ]4 ]& P3 @' ]
    * 车站类- [" E4 W! v# z' K+ f2 a- r
    */
    2 _4 g) q# W& _! _+ h
    public class Station extends Thread {, g  B+ k) N( O( L4 z2 T

    / I  p4 Q  z9 j3 n: ?    //构造方法 线程起名" U. j  N9 c* X  f4 B
        public Station(String name) {
    * Q; U; p* {2 y  o4 N$ d2 x        super(name);
    & B4 [" h7 _: x- N. F
        }! x- b$ K+ C+ n9 L# y5 D
    / v/ Y' m4 r, C2 [  U
        static int tick = 20;//票总数
    : O( j3 @9 \% p. v" K6 n
        static int step = 0;//当前是第几张票+ q5 K5 U( {, O6 O
        static Object ob = "aa";//锁对象 随意起名8 t: ?7 [- {- T4 j6 E% A) a4 a
    ; ^2 y2 q7 T" m1 _
        //重写run方法9 a( ?" C4 ?+ S' C$ X
        @Override
    / @  c' d! a2 z" h) e5 e# u+ b
        public void run() {/ e/ x% H7 u$ F; _, A! x0 p
            while (tick > 0) {
    / p( d" \+ Z4 Q; G' w/ [* ]3 ^# ^            synchronized (ob) {
    / l0 j: |$ Z# Y! F7 x                if (tick > 0) {3 [# y: c+ R7 @; r8 I( F" k
                        step++;
    2 {" b7 v+ x, A5 j) T9 t+ W  F
                        System.out.println(getName() + "卖出了第" + step + "张票");
    $ U" R/ |) l3 w* M9 ]" U
                        tick--;
    + T! |9 p$ F+ E4 E  n: F
                    } else {' N; u2 I$ ?# F; n
                        System.out.println("无票了");% e5 r( m8 R; \3 Y$ K
                    }
    1 y7 j4 G- H3 d            }, m0 w5 @+ _% ^2 D% s
                //每卖一张 睡1000毫秒
    ; i3 [# M$ Q4 h
                try {
    ( c5 C  o) l  }% B2 ?: @( E! q$ A                sleep(1000);3 O: y: c' @6 ]" q- o2 r% C
                } catch (InterruptedException e) {
      c1 p8 B- ?- G' e, W: j1 i( ^                e.printStackTrace();' W: P5 z. o2 l! f% Y+ n/ s
                }
    ; A4 M  l! L: t7 b5 M        }% p9 d1 f& r3 U8 d
        }0 s! ]- C* P; n. a3 B

    ! G# O" |( h; w+ O! Z, I) E}& O! [3 ]8 J) p! K, W' n* w; J
    9 k4 m: j, R( T1 w! K3 c: b: k
    & V+ ^0 i9 r( d& k
    package com.javazx.test.thread;
    % `, }' ~. L" p3 y) v6 H( j7 @
    $ ~( X" ^) X5 f% ~# u
    /**6 C# G. T) X  U* Z0 m" k) l: i/ \5 P
    * 窗口类6 F  [5 M- J: p3 K+ @% v
    */' [* d1 p7 w1 l, R1 Z% O/ u
    public class Windows {
    2 g" {3 c& o6 C+ P9 m! ^    public static void main(String[] args) {
    $ h$ }' @% r4 u8 O        //初始化三个卖票窗口2 A  @% F% `& O# Z  ^
            Station s1 = new Station("窗口1");* d1 y8 `$ f5 Z8 d( v, `4 S
            Station s2 = new Station("窗口2");
    - z6 _  b. q" [* _0 P  Y
            Station s3 = new Station("窗口3");
    " [7 \: @; Y7 M- Y* Z. S: S

    3 \$ R% Q% U& X7 y3 c
            //三个窗口开始卖票5 V) P( P; `, F& u6 ?  y
            s1.start();( b. n+ _9 i' z5 Q- M
            s2.start();
    * s: C' I& I3 `. A; @7 r- h- v: B
            s3.start();9 j; d/ A9 S% @8 ^: v

    - d3 |# R. g) u' ~: ]( o, I
        }3 J9 S8 R4 }1 Q% Q& o, _2 [
    }
    % l$ |% j& \) G
    ) c7 p/ U4 `5 x$ A, _8 E+ I% E
    4 w; x3 o# G% T4 I: i' O运行结果:; f1 }' D, \, F, h$ c
    6 z* P# s! w2 E$ E6 a
    窗口1卖出了第1张票) B7 a) P( A2 o0 \2 Y% M
    窗口3卖出了第2张票: L2 S% D' b& a8 r8 J0 v( C% k4 Z
    窗口2卖出了第3张票
    ' {4 E* D/ \' `8 O, j3 V窗口1卖出了第4张票3 ~( `3 Z: e  d+ O
    窗口2卖出了第5张票6 Q7 b3 C" r: |, l- ~# E4 X6 E
    窗口3卖出了第6张票9 v0 c3 Z0 M5 j1 {4 t2 E' e; E  S
    窗口1卖出了第7张票7 l. T/ r5 \' [4 n4 ]
    窗口2卖出了第8张票8 j' ?6 e$ E% s
    窗口3卖出了第9张票7 @' T! c# }% u' s
    窗口3卖出了第10张票& {' X4 k/ F/ E8 H8 t! r
    窗口2卖出了第11张票
    0 [- V0 ^- t6 |* d+ K( |窗口1卖出了第12张票% ]- @0 ]4 s' E( D% `) X
    窗口3卖出了第13张票/ s' T2 }; B5 q* O: ]; R
    窗口2卖出了第14张票9 Z, r* `! \+ f' S0 |( D
    窗口1卖出了第15张票! |6 ^) i8 f, @  N# A! F* [" b. n
    窗口3卖出了第16张票8 T8 o  J1 R! @
    窗口2卖出了第17张票
    3 o% B5 V3 q8 Y, e* ?9 K窗口1卖出了第18张票0 N, }, _1 R8 c9 {  V7 e
    窗口3卖出了第19张票& b1 q$ ^3 ^9 ]; R
    窗口1卖出了第20张票- Y% b2 U2 u0 q$ ]8 \
    无票了& W' {8 f9 ?3 ?, {7 M
    ) F0 r# ~7 \" d  E. J# h- Z, @) I

    ; l" E. Y. X1 U
    3 g; b, H2 |0 Y- y. b' O6 H! d: k2 j) P
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-3-29 05:33 , Processed in 0.082346 second(s), 29 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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