java并发练习之快乐影院
生活随笔
收集整理的這篇文章主要介紹了
java并发练习之快乐影院
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一:引言
這里是加了個同步塊,來保證數(shù)據(jù)的準確性,用了個容器使,我們可以選位置
二:上碼(這里是模擬在電影院選位置)
package com.wyj.three;import java.util.ArrayList; import java.util.List;public class Demo6_快樂影院2 {public static void main(String[] args) {// TODO Auto-generated method stub//電影院中可用的位置List<Integer> ticts = new ArrayList<>();ticts.add(1);ticts.add(2);ticts.add(3);ticts.add(4);ticts.add(5);ticts.add(6);//顧客需要的位置List<Integer> seats1 = new ArrayList<>();seats1.add(1);seats1.add(2);List<Integer> seats2 = new ArrayList<>();seats2.add(7);Cinema2 cinema = new Cinema2(ticts,"快樂影院!");new Thread(new Customer2(seats1, cinema),"大王").start();new Thread(new Customer2(seats2,cinema),"小王").start();} }class Cinema2{private List<Integer> ticts;//票數(shù)private String name;//電影院名稱public Cinema2(List<Integer> ticts, String name) {super();this.ticts = ticts;this.name = name;}//購票public boolean Moreticket(List<Integer> seats) {System.out.println("可用位置為:"+this.ticts);List<Integer> copy = new ArrayList<Integer>();//賦值,將ticte容器的內(nèi)容復(fù)制到copy容器當中copy.addAll(ticts);//相減 這樣可以減去copy容器包含seats容器中相同的元素copy.removeAll(seats);//這里表示 seats容器當中的元素,copy容器都包含if(ticts.size() - copy.size() != seats.size()) {return false;}ticts = copy;return true;} } //顧客 自己選位置 class Customer2 implements Runnable{private List<Integer> seats;private Cinema2 ca;public Customer2(List<Integer> seats, Cinema2 ca) {super();this.seats = seats;this.ca = ca;}@Overridepublic void run() {// TODO Auto-generated method stubsynchronized (ca) {boolean flag = ca.Moreticket(seats);if(flag) {System.out.println("出票成功:"+Thread.currentThread().getName()+"的位置-->"+this.seats);}else {System.out.println("出票失敗"+Thread.currentThread().getName());}}}}
如有疑問請留言
總結(jié)
以上是生活随笔為你收集整理的java并发练习之快乐影院的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7-34 任务调度的合理性 (25 分)
- 下一篇: 如何使用PQ分区魔术师