|
|
demo项目名称:《项目java多线程售票实例源码》
java源代码:
package com.javazx.test.thread;
* y$ p" U1 Y" k) Z2 r. E9 A# \
/**
* 车站类
*/$ w/ J6 }* O, q. I5 p
public class Station extends Thread {3 _' G) S" |+ ?5 b' K
//构造方法 线程起名- K5 ~0 [- g1 C) u
public Station(String name) {+ ]; M: y$ D2 Q
super(name);- S( c% G5 m8 B1 u9 r# b
}
static int tick = 20;//票总数
static int step = 0;//当前是第几张票& W" C: u/ J( Z. ?" Q) e/ J# B
static Object ob = "aa";//锁对象 随意起名+ U( Z8 ^$ v* B% G/ o. i+ _
//重写run方法5 S3 A6 {9 w1 B4 y: @- g
@Override3 W; G( M7 V4 p! n2 P* e
public void run() {
while (tick > 0) {
synchronized (ob) {
if (tick > 0) {
step++;; D* J/ S1 K- U9 g
System.out.println(getName() + "卖出了第" + step + "张票");" @' D p4 A- O h1 d' t `" D
tick--;
} else {
System.out.println("无票了");
}
}
//每卖一张 睡1000毫秒
try {2 c( f/ ?2 R% ~6 d1 A
sleep(1000); g7 g9 o! o/ E! Z! u
} catch (InterruptedException e) {, e p( _+ q0 z/ a
e.printStackTrace();( r6 @- f0 m7 e$ ^3 n
}
}
}$ \ L: w9 G! x$ i& a- c
7 G# q$ H* s$ s
}' @- E* o( I' @
. w. P9 `1 E1 K
2 M( k8 v) Y! W
package com.javazx.test.thread;
2 M3 q% ~/ F) N0 }8 C$ e- _
/*** l+ H' j, r- o0 k% |. R; s! w8 W
* 窗口类 _ n l! H( n# d
*/5 Z Y5 k6 Z1 t; O+ N6 Y
public class Windows {$ O$ `4 G3 _9 X: h2 n
public static void main(String[] args) {
//初始化三个卖票窗口
Station s1 = new Station("窗口1");
Station s2 = new Station("窗口2");
Station s3 = new Station("窗口3");' N$ o5 t( ^3 l3 X' X5 P F
& V7 [& K$ S0 {3 z9 e+ w- @
//三个窗口开始卖票* V3 Y2 R" B3 k3 o' K4 A; w
s1.start();7 E! N7 G& F) K5 E* l5 N2 M0 p5 J
s2.start();
s3.start();6 c7 E: k0 p" @' M$ S3 ]
}1 y% e/ b& U2 Q
}( d8 a5 R& \1 `2 Z# t" B# j( K( p0 t1 d$ y2 V
) D% P) n' d7 P
运行结果:
: ~# G6 e) _5 F: L
窗口1卖出了第1张票
窗口3卖出了第2张票2 i6 E9 l! q5 G% t8 g
窗口2卖出了第3张票
窗口1卖出了第4张票
窗口2卖出了第5张票! q! N" p0 {& G* @
窗口3卖出了第6张票& A. L( @; s; e
窗口1卖出了第7张票& I/ F, J* O2 h' F F
窗口2卖出了第8张票
窗口3卖出了第9张票
窗口3卖出了第10张票
窗口2卖出了第11张票$ p- A1 G" `% G
窗口1卖出了第12张票0 m+ c+ e3 F% [& s
窗口3卖出了第13张票
窗口2卖出了第14张票
窗口1卖出了第15张票% w1 ?. z! O" {! U; I" A* x' ]0 [
窗口3卖出了第16张票
窗口2卖出了第17张票
窗口1卖出了第18张票: T! {/ b) g h( G; i Z
窗口3卖出了第19张票
窗口1卖出了第20张票8 w9 D) x+ _) Z- a1 {' `6 j
无票了 h) Z
|
|