黑马程序员技术交流社区

标题: 关于银行调度系统的一点疑问 [打印本页]

作者: 中华教书人    时间: 2014-9-18 16:01
标题: 关于银行调度系统的一点疑问
常量定义中
Constants.MAX_SERVICE_TIME=10000;
Constants.MIN_SERVICE_TIME=1000;

看张老师的银行调度系统的视频,里面有这么一段代码,深感疑惑
int maxRandom = Constants.MAX_SERVICE_TIME-Constants.MIN_SERVICE_TIME;
int serviceTime = new Random().nextInt(maxRandom)+1 +Constants.MIN_SERVICE_TIME ;


我很好奇的是,为什么这里会要加1,其目的何在?搞不清楚?谁清楚帮忙解答一下


作者: liaorubei    时间: 2014-9-18 16:09
new Random().nextInt(maxRandom)方法产生的是一个大于等于0,小于maxRandom值的一个整数,
但是线程休眠不可能是0秒的,所以在原基础上+1,
又因为int maxRandom = Constants.MAX_SERVICE_TIME-Constants.MIN_SERVICE_TIME;
所以整体得出来的就是大于等于1并小于maxRandom值的一个数,
也就是说,最极端的情况也是随机出来1毫秒,然后再加上Constants.MIN_SERVICE_TIME的1000毫秒,
就有了1001毫秒了,也就是说一秒多那么一丁点
作者: 中华教书人    时间: 2014-9-18 16:47
liaorubei 发表于 2014-9-18 16:09
new Random().nextInt(maxRandom)方法产生的是一个大于等于0,小于maxRandom值的一个整数,
但是线程休眠不可 ...

正好1000不可以吗?
作者: 不想飞不到    时间: 2014-9-18 17:04
+1是为了定一个随机数的下限,让你的系统产生的数据具有实际价值。
作者: 中华教书人    时间: 2014-9-18 19:08
MichaelRodman 发表于 2014-9-18 17:20
maxRandom算出来是9000么,new Rand().nextInt随机出的是 0-8999范围内的数,然后加上一正好是1-9000.再加 ...

搞不清楚的一点是,如果这里不加这个1,系统会出问题吗?因为后面已经有个1000了
作者: happyto1021    时间: 2014-9-19 08:05
还没看到




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