电影院购票系统

电影院购票系统

利用Java多线程实现电影院购票系统。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public class Cinema_Test {

public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> list =new ArrayList<>();
list.add(1);list.add(4);list.add(6);list.add(7);list.add(8);list.add(2);list.add(3);
List<Integer> Min =new ArrayList<>();
Min.add(3);Min.add(6);Min.add(7);
List<Integer> Wang =new ArrayList<>();
Wang.add(6);Wang.add(10);Wang.add(7);
Cinema c=new Cinema(list,"万达");
new Thread(new User(Min,c),"小明").start();
new Thread(new User(Wang,c),"老王").start();
}

}
//电影院
class Cinema{
private List<Integer> Number;
String Name;
public Cinema(List<Integer> number, String name) {
Number = number;
Name = name;
}
//买票
public boolean Choice(List<Integer> Position) {
System.out.println("可用位置:"+Number);
List<Integer> list =new ArrayList<>();
list.addAll(Number);
list.removeAll(Position);
//判断大小
if(Number.size()-Position.size()!=list.size())
return false;

Number=list;
return true;
}
}
//用户
class User implements Runnable{
private List<Integer> Position;
Cinema C;
public User(List<Integer> position, Cinema c) {
Position = position;
C = c;
}
@Override
public void run() {
synchronized(C) {
boolean flag=C.Choice(Position);
if(flag) {
System.out.println("出票成功"+Thread.currentThread().getName()+"的位置是:"+Position);
}
else
System.out.println("你要的位置是:"+Position+"\n"+"出票失败,没有位置");

} //同步锁
}

}

结果

可用位置:[1, 4, 6, 7, 8, 2, 3]
出票成功小明的位置是:[3, 6, 7]
可用位置:[1, 4, 8, 2]
你要的位置是:[6, 10, 7]
出票失败,没有位置

原创技术分享,您的支持将鼓励我继续创作
0%