线程休眠的方法是Thread.sleep(long millis) 和Thread.sleep(long millis, int nanos)
sleep()单位是毫秒
问题1.休眠的时候,哪个线程会休眠
答案:哪个线程调用了sleep,哪个就会休眠
问题2.主线程能休眠了
可以
Thread.sleep()经常被调用来进行程序的等待,比如你想让你的程序定时执行,可以写个代码
int a=2
while(a > 1){
run...
Thread.sleep(24*3600*1000);// 每天跑一次
}
看个例子
package com.javaer.thread;
public class TSleep implements Runnable {
public static void main(String[] args) {
Thread s1 = new Thread(new TSleep(),"S1");
Thread s2 = new Thread(new TSleep(),"S2");
s1.start();
s2.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < 10; i++) {
System.out.println("线程"+Thread.currentThread().getName()+"第" + i + "次执行!");
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
线程S1第0次执行!
线程S2第0次执行!
线程S1第1次执行!
线程S2第1次执行!
线程S1第2次执行!
线程S2第2次执行!
线程S2第3次执行!
线程S1第3次执行!
线程S1第4次执行!
线程S2第4次执行!
线程S1第5次执行!
线程S2第5次执行!
线程S2第6次执行!
线程S1第6次执行!
线程S1第7次执行!
线程S2第7次执行!
线程S2第8次执行!
线程S1第8次执行!
线程S1第9次执行!
线程S2第9次执行!
例子得出,线程的时间休眠并非精确控制,只是接近精确。 有时候线程s2先执行了。