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

© 中华教书人 中级黑马   /  2014-9-18 16:01  /  1525 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

常量定义中
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,其目的何在?搞不清楚?谁清楚帮忙解答一下

7 个回复

倒序浏览
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毫秒了,也就是说一秒多那么一丁点
回复 使用道具 举报
liaorubei 发表于 2014-9-18 16:09
new Random().nextInt(maxRandom)方法产生的是一个大于等于0,小于maxRandom值的一个整数,
但是线程休眠不可 ...

正好1000不可以吗?
回复 使用道具 举报
+1是为了定一个随机数的下限,让你的系统产生的数据具有实际价值。
回复 使用道具 举报
MichaelRodman 发表于 2014-9-18 17:20
maxRandom算出来是9000么,new Rand().nextInt随机出的是 0-8999范围内的数,然后加上一正好是1-9000.再加 ...

搞不清楚的一点是,如果这里不加这个1,系统会出问题吗?因为后面已经有个1000了
回复 使用道具 举报
happyto1021 来自手机 中级黑马 2014-9-19 08:05:42
地板
还没看到
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马