[seriesposts]
线程休眠的方法是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先执行了。