- 假设一个银行有3个窗口可以办理业务,其中2号窗口只能办理现金业务,
- 其他窗口现金业务和理财业务均能办理。(java)
- 有5个人分别是“张三”,”李四”,”赵四”,”王五”,”田七”来该银行办理业务。
- 其中赵四和田七是理财业务,其他均为现金业务。
- 用线程模拟叫号机叫号的过程,并在控制台上打印出哪个人到哪个窗口办理业务
- (每次办理业务需耗时300ms,假设正好赵四或者田七要办理业务排到了2号窗口,
- 则不能办理,直接重新安排其他窗口办理,4个窗口不能同时叫号)
[Java基础多线程]5个人三个窗口办理业务
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- X_NewStar 2016-08-02 02:05关注
package test; class Bank { public String[] name = { "张三", "李四", "赵四", "王五", "田七" }; public int index = 0; public synchronized void op() { if (index >= name.length) { return; } if ((name[index].equals("赵四") || name[index].equals("田七")) && Thread.currentThread().getName().equals("2")) { System.out.println("不办理"); } else { System.out.println(Thread.currentThread().getName() + ":" + name[index]); index++; } } } class Cus implements Runnable { private Bank b = new Bank(); public void run() { while (b.index < b.name.length) { b.op(); try { Thread.sleep(300); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public class thread { public static void main(String[] args) { Cus c = new Cus(); Thread t1 = new Thread(c, "1"); Thread t2 = new Thread(c, "2"); Thread t3 = new Thread(c, "3"); t1.start(); t2.start(); t3.start(); } }
这样符合么
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报