先谢谢大家了!设计一个多线程程序,模拟银行业务办理。应包括:
1)该银行可以办理8种业务;
2)3个业务处理线程模拟银行营业员处理业务,业务处理时间按照业务类型而变化;
3)使用随机数时间模拟客户到达银行需要办理不同业务,客户需要办理何种业务也从银行可办理业务中随机生成;
4)在处理完200个业务后打印出客户列表,包括以下项目:
(客户名称,客户到达时间,客户办理业务类型,客户所用时间)
5)计算并打印客户平均办理业务时间;import java.util.*;
class bank1 implements Runnable{
int count = 0;
boolean flag1 = false; //flag1 flag2 flag2 用于判断营业员是否在忙 ,为true表示正在工作。
boolean flag2 = false;
boolean flag3 = false;
boolean flag4 = false; //判断对象 wait中是否有等待的客户 ,为true表示有等待的客户。
List<People1> wait = new ArrayList(); //创建一个List 类型的对象 wait,用来存放排队的客户 没有等待直接办理业的也被放在wait里面。
List<People1> peoples = new ArrayList(); //创建 一个List 类型的对象 People1s 用来存放已近完成业务的客户列表
Thread banker1,banker2,banker3,customer;
public bank1(){
banker1= new Thread(this);
banker1.setName("banker1");
banker2= new Thread(this);
banker2.setName("banker2");
banker3= new Thread(this);
banker3.setName("banker3");
customer= new Thread(this);
customer.setName("customer");
customer.start();
banker2.start();
banker3.start();
banker1.start();
}
public void run(){
if(Thread.currentThread().getName().equalsIgnoreCase("customer")){
for(int i=1;i <=10;i++){
People1 people1 = new People1(null, null, null, 1);
wait.add(people1);
System.out.println(wait.size());
peoples.add(people1);
System.out.println("新客户");
}
}
else if(Thread.currentThread().getName().equalsIgnoreCase("banker1")) {
try {
Thread.sleep(1);
} catch (InterruptedException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
System.out.println(wait.size());
while((wait.size())!=0){
System.out.println("b1");
flag1=true;
switch ((int)(Math.random()*8)+1){
case 1 : a();break;
case 2 : b();break;
case 3 : c();break;
case 4 : d();break;
case 5 : e();break;
case 6 : f();break;
case 7 : g();break;
case 8 : h();break;
}
//System.out.println("agh");
count++;
wait.remove(0); //业务员处理一个业务 wait中的第一个元素就被删掉了。
flag1=false;
}
}
else if(Thread.currentThread().getName().equalsIgnoreCase("banker2")){
try {
Thread.sleep(1);
} catch (InterruptedException e2) {
// TODO 自动生成 catch 块
e2.printStackTrace();
}
System.out.println(wait.size());
System.out.println(wait.size());
while(wait.size() !=0){
System.out.println("b2");
flag2=true;
switch ((int)(Math.random()*8)+1){
case 1 : a();break;
case 2 : b();break;
case 3 : c();break;
case 4 : d();break;
case 5 : e();break;
case 6 : f();break;
case 7 : g();break;
case 8 : h();break;
}
count++;
wait.remove(0);
flag2=false;
}
}
else if(Thread.currentThread().getName().equals("banker3")){
try {
Thread.sleep(1);
} catch (InterruptedException e3) {
// TODO 自动生成 catch 块
e3.printStackTrace();
}
System.out.println(wait.size());
System.out.println(wait.size());
while(wait.size()!=0){
System.out.println("b3");
flag3=true;
switch ((int)(Math.random()*8)+1){
case 1 : a();break;
case 2 : b();break;
case 3 : c();break;
case 4 : d();break;
case 5 : e();break;
case 6 : f();break;
case 7 : g();break;
case 8 : h();break;
}
count++;
wait.remove(0);
flag2=false;
}
} //if(count == 10)
//dump();
}
public void a(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"a",1 );
peoples.add(b);
}
public void b(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"b",1 );
peoples.add(b);
}
public void c(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"c",2);
peoples.add(b);
}
public void d(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"d",2);
peoples.add(b);
}
public void e(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"e",3);
peoples.add(b);
}
public void f(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"f",3);
peoples.add(b);
}
public void g(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"g",4);
peoples.add(b);
}
public void h(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"h",4);
peoples.add(b);
}
void dump(){//显示所有学生对象信息
Iterator <People1> iterator = peoples.iterator();
while(iterator.hasNext()){
People1 people = (People1)iterator.next();
people.dump();
}
}
}
class People1 {
private String name;
private String type;
private int needTime;
public People1 (String name, Date arriveTime,String type,int needTime){
this.name = name;
this.type = type;
this.needTime = needTime;
}
public String getName() {
return name;
}
public Date getarriveTime() {
Date nowTime = new Date();
return nowTime;
}
public String getType() {
return type;
}
public int getNeedTime() {
return needTime;
}
public void dump(){
System.out.println("客户名称"+getName());
System.out.println("客户到达时间"+getarriveTime());
System.out.println("客户办理业务类型"+getType());
System.out.println("客户所用时间"+getNeedTime());
}
}
public class ThreadBank1 {
public static void main(String[] args) {
bank1 a = new bank1();
// Thread b = new Thread(a);
// b.start();
}
}
1)该银行可以办理8种业务;
2)3个业务处理线程模拟银行营业员处理业务,业务处理时间按照业务类型而变化;
3)使用随机数时间模拟客户到达银行需要办理不同业务,客户需要办理何种业务也从银行可办理业务中随机生成;
4)在处理完200个业务后打印出客户列表,包括以下项目:
(客户名称,客户到达时间,客户办理业务类型,客户所用时间)
5)计算并打印客户平均办理业务时间;import java.util.*;
class bank1 implements Runnable{
int count = 0;
boolean flag1 = false; //flag1 flag2 flag2 用于判断营业员是否在忙 ,为true表示正在工作。
boolean flag2 = false;
boolean flag3 = false;
boolean flag4 = false; //判断对象 wait中是否有等待的客户 ,为true表示有等待的客户。
List<People1> wait = new ArrayList(); //创建一个List 类型的对象 wait,用来存放排队的客户 没有等待直接办理业的也被放在wait里面。
List<People1> peoples = new ArrayList(); //创建 一个List 类型的对象 People1s 用来存放已近完成业务的客户列表
Thread banker1,banker2,banker3,customer;
public bank1(){
banker1= new Thread(this);
banker1.setName("banker1");
banker2= new Thread(this);
banker2.setName("banker2");
banker3= new Thread(this);
banker3.setName("banker3");
customer= new Thread(this);
customer.setName("customer");
customer.start();
banker2.start();
banker3.start();
banker1.start();
}
public void run(){
if(Thread.currentThread().getName().equalsIgnoreCase("customer")){
for(int i=1;i <=10;i++){
People1 people1 = new People1(null, null, null, 1);
wait.add(people1);
System.out.println(wait.size());
peoples.add(people1);
System.out.println("新客户");
}
}
else if(Thread.currentThread().getName().equalsIgnoreCase("banker1")) {
try {
Thread.sleep(1);
} catch (InterruptedException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
System.out.println(wait.size());
while((wait.size())!=0){
System.out.println("b1");
flag1=true;
switch ((int)(Math.random()*8)+1){
case 1 : a();break;
case 2 : b();break;
case 3 : c();break;
case 4 : d();break;
case 5 : e();break;
case 6 : f();break;
case 7 : g();break;
case 8 : h();break;
}
//System.out.println("agh");
count++;
wait.remove(0); //业务员处理一个业务 wait中的第一个元素就被删掉了。
flag1=false;
}
}
else if(Thread.currentThread().getName().equalsIgnoreCase("banker2")){
try {
Thread.sleep(1);
} catch (InterruptedException e2) {
// TODO 自动生成 catch 块
e2.printStackTrace();
}
System.out.println(wait.size());
System.out.println(wait.size());
while(wait.size() !=0){
System.out.println("b2");
flag2=true;
switch ((int)(Math.random()*8)+1){
case 1 : a();break;
case 2 : b();break;
case 3 : c();break;
case 4 : d();break;
case 5 : e();break;
case 6 : f();break;
case 7 : g();break;
case 8 : h();break;
}
count++;
wait.remove(0);
flag2=false;
}
}
else if(Thread.currentThread().getName().equals("banker3")){
try {
Thread.sleep(1);
} catch (InterruptedException e3) {
// TODO 自动生成 catch 块
e3.printStackTrace();
}
System.out.println(wait.size());
System.out.println(wait.size());
while(wait.size()!=0){
System.out.println("b3");
flag3=true;
switch ((int)(Math.random()*8)+1){
case 1 : a();break;
case 2 : b();break;
case 3 : c();break;
case 4 : d();break;
case 5 : e();break;
case 6 : f();break;
case 7 : g();break;
case 8 : h();break;
}
count++;
wait.remove(0);
flag2=false;
}
} //if(count == 10)
//dump();
}
public void a(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"a",1 );
peoples.add(b);
}
public void b(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"b",1 );
peoples.add(b);
}
public void c(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"c",2);
peoples.add(b);
}
public void d(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"d",2);
peoples.add(b);
}
public void e(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"e",3);
peoples.add(b);
}
public void f(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"f",3);
peoples.add(b);
}
public void g(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"g",4);
peoples.add(b);
}
public void h(){
People1 b=new People1("客户"+count,wait.get(0).getarriveTime(),"h",4);
peoples.add(b);
}
void dump(){//显示所有学生对象信息
Iterator <People1> iterator = peoples.iterator();
while(iterator.hasNext()){
People1 people = (People1)iterator.next();
people.dump();
}
}
}
class People1 {
private String name;
private String type;
private int needTime;
public People1 (String name, Date arriveTime,String type,int needTime){
this.name = name;
this.type = type;
this.needTime = needTime;
}
public String getName() {
return name;
}
public Date getarriveTime() {
Date nowTime = new Date();
return nowTime;
}
public String getType() {
return type;
}
public int getNeedTime() {
return needTime;
}
public void dump(){
System.out.println("客户名称"+getName());
System.out.println("客户到达时间"+getarriveTime());
System.out.println("客户办理业务类型"+getType());
System.out.println("客户所用时间"+getNeedTime());
}
}
public class ThreadBank1 {
public static void main(String[] args) {
bank1 a = new bank1();
// Thread b = new Thread(a);
// b.start();
}
}
package com.esen.chenf.test;import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;class bank1 implements Runnable {
int count = 0; /**
* flag在该代码里没有实质意义
*/
// boolean flag1 = false; //flag1 flag2 flag2 用于判断营业员是否在忙 ,为true表示正在工作。
//
// boolean flag2 = false;
//
// boolean flag3 = false;
//
// boolean flag4 = false; //判断对象 wait中是否有等待的客户 ,为true表示有等待的客户。 List<People1> wait = new ArrayList<People1>(); //创建一个List 类型的对象 wait,用来存放排队的客户 没有等待直接办理业的也被放在wait里面。 List<People1> peoples = new ArrayList<People1>(); //创建 一个List 类型的对象 People1s 用来存放已近完成业务的客户列表 Thread banker1, banker2, banker3, customer; public bank1() {
banker1 = new Thread(this);
banker1.setName("banker1");
banker2 = new Thread(this);
banker2.setName("banker2");
banker3 = new Thread(this);
banker3.setName("banker3");
customer = new Thread(this);
customer.setName("customer");
customer.start();
banker2.start();
banker3.start();
banker1.start();
} public void run() {
if (Thread.currentThread().getName().equalsIgnoreCase("customer")) {
for (int i = 1; i <= 10; i++) {
People1 people1 = new People1(null, null, null, 1);
wait.add(people1);
System.out.println(wait.size());
peoples.add(people1);
System.out.println("新客户");
}
}
else if (Thread.currentThread().getName().equalsIgnoreCase("banker1")) {
doThread(1);
}
else if (Thread.currentThread().getName().equalsIgnoreCase("banker2")) {
doThread(2);
}
else if (Thread.currentThread().getName().equals("banker3")) {
doThread(3);
} //if(count == 10)
//dump();
} private synchronized void doThread(int index) {
try {
Thread.sleep(1);
}
catch (InterruptedException e2) {
// TODO 自动生成 catch 块
e2.printStackTrace();
}
System.out.println(wait.size());
while (wait.size() != 0) {
System.out.println("b" + index);
doSwitch();
count++;
wait.remove(0);
}
} private void doSwitch() {
switch ((int) (Math.random() * 8) + 1) {
case 1:
a();
break;
case 2:
b();
break;
case 3:
c();
break;
case 4:
d();
break;
case 5:
e();
break;
case 6:
f();
break;
case 7:
g();
break;
case 8:
h();
break;
}
} public void a() {
People1 b = new People1("客户" + count, wait.get(0).getarriveTime(), "a", 1);
peoples.add(b);
} public void b() {
People1 b = new People1("客户" + count, wait.get(0).getarriveTime(), "b", 1);
peoples.add(b);
} public void c() {
People1 b = new People1("客户" + count, wait.get(0).getarriveTime(), "c", 2);
peoples.add(b);
} public void d() {
People1 b = new People1("客户" + count, wait.get(0).getarriveTime(), "d", 2);
peoples.add(b);
} public void e() {
People1 b = new People1("客户" + count, wait.get(0).getarriveTime(), "e", 3);
peoples.add(b);
} public void f() {
People1 b = new People1("客户" + count, wait.get(0).getarriveTime(), "f", 3);
peoples.add(b); } public void g() {
People1 b = new People1("客户" + count, wait.get(0).getarriveTime(), "g", 4);
peoples.add(b);
} public void h() {
People1 b = new People1("客户" + count, wait.get(0).getarriveTime(), "h", 4);
peoples.add(b);
}// void dump() {//显示所有学生对象信息
// Iterator<People1> iterator = peoples.iterator();
// while (iterator.hasNext()) {
// People1 people = (People1) iterator.next();
// people.dump();
// }
// }
}class People1 {
private String name; private String type; private int needTime; public People1(String name, Date arriveTime, String type, int needTime) {
this.name = name;
this.type = type;
this.needTime = needTime;
} public String getName() {
return name;
} public Date getarriveTime() {
Date nowTime = new Date();
return nowTime;
} public String getType() {
return type;
} public int getNeedTime() {
return needTime;
} public void dump() {
System.out.println("客户名称" + getName());
System.out.println("客户到达时间" + getarriveTime());
System.out.println("客户办理业务类型" + getType());
System.out.println("客户所用时间" + getNeedTime()); }
}public class Test20 {
public static void main(String[] args) {
bank1 a = new bank1();
// Thread b = new Thread(a);
// b.start();
}
}