A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李敬卫 中级黑马   /  2013-1-31 23:05  /  962 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//普通窗口服务
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?然后为什么还要再加最小时间?想不通啊,求解释

1 个回复

倒序浏览
new Random().nextInt(maxRandom)所获得的值的范围是包括0但是不包括maxRandom,加上1就表示随机数是从1到maxRandom的数值。连个数都包括。
加上最小值,是因为在设计的时候,是只有快速窗口服务时间是最小值,其它两个窗口都不能是最小值,所以只能是最小值加1到最大值之间的值了。也就是说其它窗口服务的最短时间也必须是最小值加1;
当然你如果想要其它窗口服务时间既包括最大值也包括最小值,把1加到里面就好new Random().nextInt(maxRandom+)+最小值;这时就是既包括最大值也包括最小值了。
主要还是看需求怎么定义的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马