【案例8-2】 Svip优先办理服务
【案例介绍】
1.任务描述
在日常工作生活中,无论哪个行业都会设置一些Svip用户,Svip用户具有超级优先权,在办理业务时,Svip用户具有最大的优先级。
本案例要求编写一个模拟Svip优先办理业务的程序,在正常的业务办理中,插入一个Svip用户,优先为Svip用户办理业务。本案例在实现时,可以通过多线程实现。
2.运行结果
运行结果如图8-1所示。
  
图8-1 运行结果
【案例思路】
- 查看运行结果分析后,创建一个special()方法模拟Svip办理业务。
 - 查看运行结果分析后,首先创建一个normal()方法模拟正常的窗口排队,当有Svip客户是使用join线程让步,调用special()方法优先让Svip办理业务。
 - 最后在main方法中调用normal()方法。
 
【案例代码】
Svip优先办理服务程序的代码实现如文件8-1所示。
文件8-1 Svip.java
- package chapter0802;
 - public class Svip {
 - public static void main(String[]args) throws InterruptedException
 - {
 - new Thread(new normal()).start();
 - }
 - }
 - class special extends Thread{
 - public void run()
 - {
 - System.out.println("svip客户开始办理业务");
 - System.out.println("svip客户办理业务的倒计时");
 - for(int i=10;i>=0;i--)
 - {
 - System.out.println(i+"秒");
 - try {
 - Thread.sleep(1000);
 - } catch (InterruptedException e) {
 - e.printStackTrace();
 - }
 - }
 - System.out.println("svip客户办理完毕");
 - }
 - }
 - class normal extends Thread{
 - public void run(){
 - System.out.println("业务办理窗口在正常排队中");
 - System.out.println("此时来了一位svip客户");
 - Thread t=new Thread(new special());
 - //各走各的逻辑错误,再加入join先执行完special,再执行normal剩下的
 - t.start();
 - try {
 - t.join();
 - } catch (InterruptedException e) {
 - e.printStackTrace();
 - }
 - System.out.println("业务办理窗口又恢复正常排队");
 - }
 - }
 
文件8-1中第8~24行代码是svip客户办理业务,使用for循环10次模拟办理业务;第25~39行代码是模拟窗口正常排队,第32~35行代码是normal线程让步special线程。


















