`

黑马程序员_面试题_对银行业务调度系统总结

 
阅读更多

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

1.         首先我们要先建立一个号码管理器;

里面有取号动作(获取号码的动作),和存储号码的动作;

这时就会用到集合,通过集合的方式将取出来的号码进行存储;

//      产生客户号码;并且加到集合中;

         public synchronized Integer generateNewNumber(){

                   queueNumbers.add(++lastNumber);

                   return lastNumber;

         }

//      取到我们最先添加进去的客户号码;

         public synchronized Integer fetchNumber(){

                   if(queueNumbers.size()>0){

                            return (Integer)queueNumbers.remove(0);

                   }else{

                            return null;

                   }

         }

                                         

因为它queueNumbers.remove(0)的返回类型是元素,所以;就具有获取集合中的元素功能。

2.         我们要设计一个单例模式,从一个机器上取出三类号码;通过三类号码来获取集合中的元素,也可以在集合中产生元素;

3.         通过枚举类来获取对象的名称;

public enum CustomerType {

                       COMMON,EXPRESS,VIP;

                       public String toString(){

                            String name = null;

                            switch(this){

                            case COMMON:

                                     name = "普通";

                                     break;

                            case EXPRESS:

                                     name = "快速";

                                     break;

                            case VIP:

//                                  枚举常量的名称,这里返回就是vip

                                     name = name();

                                     break;

                            }

                            return name;

                       }

}

4.         每产生一个窗口,我们都会启动开启窗口的线程;

public void start(){

建立一个线程;执行只有一个参数,这里面就是线程;

                                          Executors.newSingleThreadExecutor().execute(

                                               new Runnable(){

                                                        public void run(){

                                          //下面这种写法的运行效率低,最好是把whilecase下面

                                                                 while(true){

                                                                           switch(type){

                                                                                    case COMMON:

                                                                                             commonService();

                                                                                             break;

                                                                                    case EXPRESS:

                                                                                             expressService();

                                                                                             break;

                                                                                    case VIP:

                                                                                             vipService();

                                                                                             break;

                                                                           }

                                                                 }

                                                        }

                                               }

                                     );

5.         线程里面的执行方法解析;

private void commonService(){

默认的是第1号,普通窗口;type的值,就是枚举里面的ToString里面的值;

String windowName = "" + number + "" + type + "窗口";      

System.out.println(windowName + "开始获取普通任务!");

产生对象获取号码;

Integer serviceNumber = NumberMachine.getInstance()

.getCommonManager().fetchNumber();        

if(serviceNumber != null ){

System.out.println(windowName + "开始为第" + serviceNumber + "号普通客户服务");

获取serviceTime时间;serviceTime010秒之间随机产生;

int maxRandom = Constants.MAX_SERVICE_TIME - Constants.MIN_SERVICE_TIME;

int serviceTime = new Random().nextInt(maxRandom)+1 + Constants.MIN_SERVICE_TIME;

                                     try {

                                               Thread.sleep(serviceTime);

                                     } catch (InterruptedException e) {

                                               e.printStackTrace();

                                     }       

System.out.println(windowName + "完成为第" + serviceNumber +

              "号普通客户服务,总共耗时" + serviceTime/1000 + "");

//获取到的号码要是为空的话;                   

}else{

System.out.println(windowName + "没有取到普通任务,正在空闲一秒");              

                                     try {

                                               Thread.sleep(1000);

                                     } catch (InterruptedException e) {

                                               e.printStackTrace();

                                     }                                   

                            }

                                 }

6.         客户拿到号码代码解析

//普通客户拿号

Executors.newScheduledThreadPool(1).scheduleAtFixedRate(

                                          new Runnable(){

                       public void run(){

//从机器中产生一个号码;

Integer serviceNumber = NumberMachine.getInstance().

getCommonManager().generateNewNumber();

//拿到号码;

System.out.println("" + serviceNumber + "号普通客户正在等待服务!");                      

                   }

                   },

                0,

Constants.COMMON_CUSTOMER_INTERVAL_TIME,

TimeUnit.SECONDS);

7.         银行系统里面用到的知识点总结;

1、集合;

2、同步代码块;

3、单例模式;

4、枚举类

51.5的新特性线程池;包括定时线程,和不定时线程两种;

 

 

分享到:
评论

相关推荐

    02-7K月薪面试题破解之二_银行业务调度系统视频教程

    02-7K月薪面试题破解之二_银行业务调度系统视频教程 02-7K月薪面试题破解之二_银行业务调度系统视频教程 02-7K月薪面试题破解之二_银行业务调度系统视频教程 02-7K月薪面试题破解之二_银行业务调度系统视频教程 02-...

    java_examine.rar_java 试题_程序员 面试_程序员面试_面试_面试题

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发...在准备面试时,不仅要注意理论知识的掌握,还要注重实践经验的积累,包括但不限于项目经历、问题解决实例和代码调试能力,这些都将对面试结果产生积极影响。

    Aspnet中级程序员_面试题

    【Aspnet中级程序员面试题】是针对有一定经验的Asp.net开发者设计的考核内容,主要涵盖C#、ASP.NET、SQL以及DBA等相关技术领域。这些知识点在实际开发和项目管理中至关重要,下面将对这些核心领域进行深入探讨。 **...

    《JAVA面试题》--JAVA 黑马程序员 面试宝典全学科.zip

    十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA...

    软通动力面试题——银行业务调度系统

    在本篇文章中,我们将对软通动力的银行业务调度系统面试题进行详细的分析和解释。该系统模拟了银行业务调度系统的逻辑,涵盖了客户分类、窗口管理、业务办理时间等多个方面。 首先,让我们来了解系统的需求。系统...

    银行业务调度系统需求及面试题及代码

    其次,银行业务调度系统面试题系列《银行业务调度系统面试题系列.ppt》可能涵盖了设计、开发、测试和运维等相关知识领域。面试问题可能包括但不限于系统架构设计原则,如何处理业务流程中的瓶颈,如何实现高效的数据...

    黑马程序员_毕向东_Java基础源码.rar

    总结来说,"黑马程序员_毕向东_Java基础源码.rar"为初学者提供了一个深入学习Java编程的宝贵平台。通过学习和实践这些源代码,不仅可以巩固Java基础知识,还能培养良好的编程习惯和思维模式,为成为专业Java开发者...

    C#_面试题_总结_2

    C#_面试题_总结_2,希望对大家有所帮助。

    银行业务调度系统

    在视频教程“张孝祥-7K月薪面试题破解之二_银行业务调度系统”中,可能会详细讲解如何运用面向对象分析设计方法来构建银行业务调度系统,包括类的定义、接口设计、继承与多态的应用、以及如何利用设计模式解决实际...

    面试题——银行业务调度系统-源代码

    总结来说,这个“面试题——银行业务调度系统-源代码”项目是一个基于JavaSE的银行后台管理系统,涵盖了软件设计、数据库交互、事务处理、安全性等多个方面的知识点。通过分析和学习这个项目,开发者不仅可以提升...

    java程序员早期面试题汇总.zip

    java程序员早期面试题汇总 BAT经典面试题汇总.pdf Java常考面试题.pdf java面试题(题库全).doc java面试题-外企软件工程师面试题大全.rar 程序员面试题精选100题.pdf ... --------------------------------...

    黑马程序员java面试宝典 完整版PDF.rar

    《黑马程序员Java面试宝典》是一本...通过《黑马程序员Java面试宝典》的学习,你可以系统地复习和掌握这些知识点,提高自己的面试竞争力。书中的问题和解答将帮助你更好地理解Java编程的本质,提升在面试中的自信心。

    【黑马面试宝典】虐面试官神器之必备黑马程序员Android面试宝典.zip

    Android面试宝典包含两个宝典: 1【黑马项目宝典】虐面试官神器之必备黑马程序员项目宝典V1.1 内容包括:(1)电子商城(2)ListView系列(3)图像处理(4)动画效果(5)控件大全(6)新闻资讯(7)生活相关(8)...

    JAVAAndroid面试题讲解视频

    资源名称:JAVA Android面试题讲解视频资源目录:【】2012黑马程序员01_面试题【】2012黑马程序员02_面试题【】2012黑马程序员03_面试题【】2012黑马程序员04_面试题【】225ce844c6c817e9614d8f17ea70a640【】...

    程序员_面试问题回答

    【程序员面试问题回答】 面试是每个程序员职业生涯中的关键环节,如何回答面试问题直接影响到是否能够获得心仪的工作。以下是一些面试中常见的问题及其理想的回答策略: 1. 自我介绍:这是展示个人能力和经历的...

    .net程序员面试题

    收集了很多师兄师姐出去就业后,收集回来的企业面试.net程序员的面试题啊!不容易啊!1-8份面试题,好好看啊!都是技术题,祝面试上自己喜欢的职业

    bishiti.rar_C 面试题_c 笔试_笔试_面试_面试题

    "bishiti.rar_C 面试题_c 笔试_笔试_面试_面试题"这个压缩包包含了针对C语言的笔试和面试题目,旨在帮助求职者更好地准备技术面试,提高通过率。下面将详细讨论C语言的一些关键知识点。 1. **数据类型**:C语言提供...

    Java程序员就业面试题大全

    Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全

Global site tag (gtag.js) - Google Analytics