黑马程序员技术交流社区

标题: 银行业务系统的某段代码的疑问? [打印本页]

作者: 李敬卫    时间: 2013-1-31 23:05
标题: 银行业务系统的某段代码的疑问?
//普通窗口服务
private void commonService(){
  String windowName = "第" + number + "号" + type + "窗口";  
  System.out.println(windowName + "开始获取普通任务!");
  //获取服务的号
  Integer serviceNumber = NumberMachine.getInstance().getCommonManager().fetchServiceNumber();  
  if(serviceNumber != null ){
   System.out.println(windowName + "开始为第" + serviceNumber + "号普通客户服务");

   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 {
    //如果没有取到号,让线程等待1秒
    Thread.sleep(1000);
   } catch (InterruptedException e) {
    e.printStackTrace();
   }   
  }
}
   int serviceTime = new Random().nextInt(maxRandom)+1 + Constants.MIN_SERVICE_TIME;对于这句代码,为什么要加1?然后为什么还要再加最小时间?想不通啊,求解释

作者: 苏克    时间: 2013-2-1 00:11
new Random().nextInt(maxRandom)所获得的值的范围是包括0但是不包括maxRandom,加上1就表示随机数是从1到maxRandom的数值。连个数都包括。
加上最小值,是因为在设计的时候,是只有快速窗口服务时间是最小值,其它两个窗口都不能是最小值,所以只能是最小值加1到最大值之间的值了。也就是说其它窗口服务的最短时间也必须是最小值加1;
当然你如果想要其它窗口服务时间既包括最大值也包括最小值,把1加到里面就好new Random().nextInt(maxRandom+)+最小值;这时就是既包括最大值也包括最小值了。
主要还是看需求怎么定义的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2