`

java中Thread.sleep()

 
阅读更多

今天看到一篇文章,是说java的 Thread.sleep()方法的, 曾经没注意,sleep(0)不写不就完了,脱裤子放屁??

不是这回事啊!!记录下来备忘

 

转载地址:http://www.cnblogs.com/guodongli/archive/2011/04/07/2007721.html

 

有人提到过两个问题:

1、假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会 不会被唤醒?

2、某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?

这两个问题在http://dev.tot.name/java/html/20090225/20090225101644.htm上做了解释,作者举的ppmm的例子蛮生动的哈。归结起来就是说:在windows环境下,进程调度是抢占式的。一个进程在运行态时调用sleep(),进入等待态,睡眠结束以后,并不是直接回到运行态,而是进入就绪队列,要等到其他进程放弃时间片后才能重新进入运行态。所以sleep(1000),在1000ms以后,线程不一定会被唤醒。sleep(0)可以看成一个运行态的进程产生一个中断,由运行态直接转入就绪态。这样做是给其他就绪态进程使用时间片的机会。总之,还是操作系统中运行态、就绪态和等待态相互转化的问题。

 

 

分享到:
评论

相关推荐

    java面试宝典.docx

    总结java中长长面试的要点,迅速的掌握面经,拿到offer 1. Thread.sleep() 和 Object.wait() Thread.sleep() 和 Object.wait() 都可以抛出 InterruptedException。这个异常是不能忽略的,因为它是一个检查异常...

    Android:Handler的post()方法和Thread的start()方法执行Thread的run()方法的区别

    * 在java中真正开启线程的方法是这样的。 */ Thread t = new Thread(r); t.start(); setContentView(R.layout.activity_main); System.out.println("Activity-->"+ Thread.currentThread().getId()...

    java 一手画方一手画圆 多线程

    import java.applet.*; import java.awt.*; import java.awt.event.*; public class fangyuan extends Applet implements Runnable ...try{left.sleep(200);} catch(InterruptedException e){} }

    JAVA实现自动打字.txt

    JAVA通过线程 Thread.sleep控制打字速率来实现自动打字

    chatRoom 聊天室

    class ServerThread extends Thread { private Socket s; public ServerThread(Socket s) { this.s = s; } @Override public void run() { BufferedReader br = null; try { br = new BufferedReader...

    Java实现远程屏幕监视

    Thread.sleep(500); } catch (ImageFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); break; } catch (InterruptedException e...

    java编写的一个数字时钟

    Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } SimpleDateFormat dateformat = new SimpleDateFormat("hh:mm:ss"); String s = dateformat.format(new Date()); c.clock....

    Java图片拉伸变形实例.rar

    Java图片拉伸变形实例,其实和图片缩放十分相似,图片翻折,绘制图像的Image对象和Grahpics对象,得到MediaTracker实例,for(int i=0; i(imageHeight/2); i ) { //实现图片的翻折效果  thread.sleep(30); //线程...

    Java实现图形弹跳球程序

    Thread.sleep(100); } // Wait 100 milliseconds catch (InterruptedException e) { } } } public void start() { animator = new Thread(this); pleaseStop = false; ...

    java多线程机制 -- 源码详解

    在上述例子2中,我们在小程序这个主线程中用构造方法Thread(this)创建了一个新的线程。This代表着小程序作为这个新的线程的目标对象,因此我们的小程序必须为这个新创建的线程实现Runnable接口,即小程序利用...

    java 小球自由落体

    Thread.sleep(50); }catch(Exception e){} } while(x1>40&&x2!=0) { g.setColor(Color.white); g.fillOval(40,x1,50,50); g.fillRect(40,40,70,430); g.setColor(Color.yellow); g.fillOval(40...

    3-Threads-Runnable-Sleep-Sync:并行编程示例:3使用Thread.sleep()的可运行实现的线程同步

    3-Threads-Runnable-Sleep-Sync:并行编程示例:3使用Thread.sleep()的可运行实现的线程同步

    java核心知识点整理.pdf

    25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................

    java飞信接口,FetionApi(无license限制,附可运行例子,简单文档说明,eclipse项目)

    Thread.sleep(1000*60*120); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); break; } } }; }.start(); //fetion....

    java自动化操作win窗口元素

    可以很好的操作这些元素,但用java结合selenium来自动化测试时,并没有已经封装的类库,但是可以借助autoit和jacob来实现,本工具中提供了所需要的jar包和dll文件,按照说明文档的操作即可在java代码中使用,使用...

    JAVA高级程序设计测试题含答案.docx

    第3题 【单选题】【2.00分】【概念理解】 java中用于创建文件对象的类是 [单选题] * JAVA高级程序设计测试题含答案全文共43页,当前为第1页。 A. File(正确答案) B. Object C. Thread D. Frame E. 示例 第4题 【单选...

    基于JAVA的网络聊天室(BS)

    部分代码如下:client: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ ... Thread.sleep(100); } catch(Exception e) { } } } }

    Avro数据存储astore.zip

     java.lang.Thread.sleep(1000);  what_is(http_get_result.value());  what_is(http_post);  var http_post_result = http_post.apply("http://localhost:8080/personinfo/put/2/age", "888");  java....

    java在cpu的占有率

    Thread.sleep(CPUTIME); long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd)); if (c0 != null && c1 != null) { long idletime = c1[0] - c0[0]; long busytime = c1[1] - c0[1]; ...

    thread count

    Thread.sleep((long)(Math.random()*100)); //随机分配时间,即运动员完成时间 System.out.println("Play"+id+" arrived."); }catch (InterruptedException e) { // TODO: handle exception e.printStackTrace...

Global site tag (gtag.js) - Google Analytics