黑马程序员:银行系统

                                ------------------android培训java培训、期待与您的交流!------------------

 

Window:

  主要用于对六个窗口的描述,里面提供了private String type;private String index;private boolean busy = false;这些成员变量,还有work(),及stop()方法。

  Consumer:

  主要是提供了一个增加元素的方法addConsumer(),同时提供三个集合装三种Consumer.

  BankSystem:

  主调类。分别new了六个Window对象,和三个Consumer对象。所以相当于开启了9个线程。

  BankSystem

  import java.util.*;import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class BankDispatch { ArrayList windowLiabrary = Window.windowLiabrary; Iterator windowIterator ; Iterator consumerIterator ; Window window ; Consumer consumer;

  public static void main(String[] args) {

  new BankDispatch(); }

  public BankDispatch(){

  new Consumer("ordinary");

  new Consumer("express");

  new Consumer("VIP");

  new Window("ordinary", "1");

  new Window("ordinary", "2");

  new Window("ordinary", "3");

  new Window("ordinary", "4");

  new Window("express", "");

  new Window("VIP", "");

  while(true){

  try {

  Thread.sleep(5000);

  } catch (InterruptedException e) {

  e.printStackTrace();

  }

  } }

  }Window

  package com.renren.interview;import java.util.ArrayList;import java.util.Random;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;public class Window { public static ArrayList windowLiabrary = new ArrayList(); private String type; private String index;

  private boolean busy = false;

  int ordinaryIndex,expressIndex,VIPIndex;

  public Consumer consumer;

  public int time;

  /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((index == null) ? 0 : index.hashCode()); result = prime * result + ((type == null) ? 0 : type.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj)

  return true; if (obj == null)

  return false; if (getClass() != obj.getClass())

  return false; Window other = (Window) obj; if (index == null) {

  if (other.index != null)

  return false; } else if (!index.equals(other.index))

  return false; if (type == null) {

  if (other.type != null)

  return false; } else if (!type.equals(other.type))

  return false; return true; } public String getType(){

  return type;

  }

  public String getIndex(){

  return index;

  }

  public Window(String type,String index) { this.type = type; this.index = index; if(type.equals("ordinary") || type.equals("VIP")){

  deal(5); } else if(type.equals("express")){

  deal(1); } }

  public void deal(int delay){

  ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);

  timer.scheduleAtFixedRate(new Runnable() {

  @Override

  public void run() {

  //System.out.println(Consumer.ordinaryLibrary.size());

  if(consumer!=null){

  stop(consumer,time);

  }

  if(!busy ){

  if(type.equals("ordinary") && Consumer.ordinaryLibrary.contains(new Consumer("ordinary")) ){

  work(consumer=Consumer.ordinaryLibrary.remove(0));

  }

  else if(type.equals("express")){

  if(Consumer.expressLibrary.contains(new Consumer("express"))){

  work(consumer=Consumer.expressLibrary.remove(0));

  }

  else

  work(consumer = Consumer.ordinaryLibrary.remove(0));

  }

  else if(type.equals("VIP")){

  if(Consumer.VIPLibrary.contains(new Consumer("VIP"))){

  work(consumer = Consumer.VIPLibrary.remove(0));

  }

  else

  work(consumer = Consumer.ordinaryLibrary.remove(0));

  }

  }

  }

  },

  1,

  time = (new Random()。nextInt(delay)+1),

  TimeUnit.SECONDS);

  }

  public boolean isBusy(){

  return busy; }

  public void work(Consumer consumer){

  busy = true;

  System.out.println(index+"号普通窗口正在为"+consumer.index+"号普通客户服务");

  }

  public void stop(Consumer consumer,int time){

  busy = false;

  System.out.println((index+"号普通窗口为"+consumer.index+"号普通客户服务完成,耗时"+time+"秒")); //System.out.println(this.type+" window"+this.index+" is not busy"); }}Consumer

  se; } else if (!index.equals(other.index))

  return false; if (type == null) {

  if (other.type != null)

  return false; } else if (!type.equals(other.type))

  return false; return true; } public String getType(){

  return type;

  }

  public String getIndex(){

  return index;

  }

  public Window(String type,String index) { this.type = type; this.index = index; if(type.equals("ordinary") || type.equals("VIP")){

  deal(5); } else if(type.equals("express")){

  deal(1); } }

  public void deal(int delay){

  ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);

  timer.scheduleAtFixedRate(new Runnable() {

  @Override

  public void run() {

  //System.out.println(Consumer.ordinaryLibrary.size());

  if(consumer!=null){

  stop(consumer,time);

  }

  if(!busy ){

  if(type.equals("ordinary") && Consumer.ordinaryLibrary.contains(new Consumer("ordinary")) ){

  work(consumer=Consumer.ordinaryLibrary.rem

  package com.renren.interview;import java.util.ArrayList;import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;public class Consumer { public static int ordinaryIndex,expressIndex,VIPIndex; private String type; public static ArrayList ordinaryLibrary = new ArrayList(); public static ArrayList expressLibrary = new ArrayList(); public static ArrayList VIPLibrary = new ArrayList(); public ArrayList consumerLibrary1 ; public int index; public Consumer(String type){

  this.type = type;

  if(type.equals("ordinary")){

  System.out.println((++ordinaryIndex)+"号普通客户等待服务");

  index = ordinaryIndex;

  addConsumer(1,ordinaryLibrary);

  }

  else if(type.equals("express")){

  System.out.println((++expressIndex)+"号快速客户等待服务");

  index = expressIndex;

  addConsumer(2,expressLibrary);

  }

  else if(type.equals("VIP")){

  System.out.println((++VIPIndex)+"号VIP客户等待服务");

  index = VIPIndex;

  addConsumer(6,VIPLibrary);

  }

  }

  public void addConsumer(final int delay, ArrayList consumerLibrary){

  this.consumerLibrary1 = consumerLibrary;

  ExecutorService pool = Executors.newSingleThreadExecutor();

  pool.execute(new Runnable() {

  @Override

  public void run() {

  for(int i=1;i<1000;i++){

  try {

  Thread.sleep(/*(new Random()。nextInt(delay)+5)*/delay*1000);

  consumerLibrary1.add(new Consumer(type));

  System.out.println(ordinaryLibrary.size());

  } catch (InterruptedException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  }

  });

  }/* (non-Javadoc) * @see java.lang.Object#hashCode() */@Overridepublic int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((type == null) ? 0 : type.hashCode()); return result;}/* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */@Overridepublic boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Consumer other = (Consumer) obj; if (type == null) { if (other.type != null)

  return false; } else if (!type.equals(other.type)) return false; return true;}

  }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值