java中的Thread.sleep()
来源:互联网 发布:任我行crm 知乎 编辑:程序博客网 时间:2024/06/05 07:11
======================================================
注:本文源代码点此下载
======================================================
前两天电面过来,在海吹项目的时候,问到了thread.sleep()问题。感觉没什么啊,不就是线程睡眠一下,好让别的线程把任务做完嘛。
我当时为什么要用sleep()呢?是这样:一个主线程负责一项计算任务,它把这项任务分解开,分成n份子任务,每个子任务放到一个线程中,这样n个子任务并行计算。(其实单核情况下,又没有io需求,这样做是不会提高效率的,这里只是顺应并发的思想....)主线程呢,分配好了后,sleep()一下,睡完后把结果收上来整合。喏,就这么回事。
有人提到过两个问题:
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)可以看成一个运行态的进程产生一个中断,由运行态直接转入就绪态。这样做是给其他就绪态进程使用时间片的机会。总之,还是操作系统中运行态、就绪态和等待态相互转化的问题。
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
- java中的Thread.sleep()
- Java中的线程的休眠Thread.sleep()
- Java Thread.sleep()、Thread.yield()
- java中Thread.sleep()
- java Thread sleep
- 延迟----java Thread.sleep()
- TimeUnit类中的sleep() 和Thread.sleep()
- Java开发中,优先使用TimeUnit类中的sleep()而不是Thread中的sleep()
- java 线程Thread.Sleep详解
- java 线程Thread.Sleep详解
- java 线程Thread.Sleep详解
- java 线程Thread.Sleep详解
- java 线程Thread.Sleep详解
- java 线程Thread.Sleep详解
- Java Thread.sleep的InterruptedException
- Java中Thread.sleep()和Thread.currentThread.sleep()的区别
- Thread中的Sleep和Wait区别
- 浅谈Java多线程中的Thread.sleep()和wait()方法的区别
- asp.net过滤HTML标签的几个函数
- HTML头部信息
- WebForm客户端调试工具log4javascript
- 将html代码保存到xml文件中并用xsl转换输出到网页中的方法
- HTML转PDF之HTML内容解析和PostScript的生成
- java中的Thread.sleep()
- DELPHI关于文件流
- 跟KingDZ学HTML5之十二 HTML5 Form 表单元素新增属性
- 使用Java提供的方法防止IE缓存JSP文件
- AJAX技术基础__Ajax技术文档
- 动态网页静态化(asp.net-html)
- C Sharp与.net学习笔记(二)
- 快速学习AJAX之一
- Ajax最简单实例(加法运算)