黑马程序员技术交流社区
标题:
关于随机睡眠时间的问题
[打印本页]
作者:
张开开
时间:
2012-2-18 13:06
标题:
关于随机睡眠时间的问题
在调用Thread.sleep()方法时,有时需要设置一个随即的睡眠时间,我看Java课本上的随机睡眠时间是用(long)(Math.random()*1000))来表示的,为什么要乘以1000呢,随机的时间有一个特定的范围吗??求解!
作者:
邱纲
时间:
2012-2-18 13:39
因为Thread.sleep()方法里面的时间是以毫秒为单位的,Math.random()可以产生一个0~9的随机数,比如产生的数是6,如果不乘以1000的话,就表示这个线程休眠千分之六秒,你能察觉到吗,你没观察到结果,结果线程的休眠时间已经到了。
在这里乘以1000,是表示让这个线程休眠几秒钟(乘以1000,就表示秒,1秒==1000毫秒)。
作者:
吴文华
时间:
2012-2-18 13:57
计算单位问题,thread.sleep()里的单位是毫秒,乘以1000就变成秒了,便于我们日常生活的感觉。因为我们平时常用的单位就是秒,很少用毫秒。之所以乘以1000,是表示让这个线程休眠几秒钟(乘以1000,就表示秒,1秒==1000毫秒)。
thread.sleep():1.可以调用Thread类的静态方法: public static void sleep (long millis) thorows InterruptedException
使得当前线程休眠(暂时停止执行millis毫秒)
2.由于是静态方法,sleep可以由类名.直接调用:Thread.sleep(…)
class MyThread extends Thread {
boolean flag = true;
public void run(){
while(flag){
System.out.println("==="+new Date()+"===");
try {
sleep(1000); //直接调用
} catch (InterruptedException e) {
return;
}
}
}
}
/*
public void run() {
while (true) {
String temp = new Date().toString();
String t = temp.substring(11, temp.indexOf('C'));
t = t.trim();
String[] time = t.split(":");
if (time.length == 3) {
System.out.println(“现在是” + time[0] + “点” +
time[1] + "分" + time[2] + "秒");
}
try {
Thread.sleep(5000); //由类名调用
} catch (InterruptedException e) {
return;
}
}
}
}
*/
一个直接调用,一个Thread.sleep 由类名调用。
作者:
何招俊
时间:
2012-2-18 15:40
Thread.sleep()方法里面的时间是以毫秒为单位的,1秒等于1000毫秒,而Math.random()可以产生一个0~9的随机数,乘以1000是为了让延长线程的休眠时间,以便我们能够感觉得到。不然时间太短你会感觉这句话没有效果。
作者:
花开~的季节
时间:
2012-2-18 20:32
表示时间在1000秒内产生
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2