java多线程休眠

[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先执行了。


This entry was posted in JAVA and tagged , , , , , , . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/java-thread-xium/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.
2020.03.24 评论已经全局关闭,有事加QQ聊天