java线程暂停1s,如何实现?

紫回蓝 2012-08-31 09:47:39
各位,我的主要意思是,我用Thread.sleep(1000),之后,操作系统不是进程轮转么,JAVA程序是如何知道1000s后的它一定系统给它资源让它活过来呢?

我的猜想:系统进程轮转的时间片很短暂,小于1ms,所以,如果以1ms为单位,系统一定会轮转到java程序,是这样么?求大神指点
...全文
571 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫回蓝 2012-09-08
  • 打赏
  • 举报
回复
谢谢,各位点评,懂了很多。
BadPattern 2012-09-03
  • 打赏
  • 举报
回复
应该不会非常非常精确的,不过对于人的感觉来说,误差在可接受范围之内,当然如果编写异常精细的程序,java可能不合适了
flowerjack 2012-08-31
  • 打赏
  • 举报
回复
多线程后,很难控制程序 的先后执行顺序的。
flowerjack 2012-08-31
  • 打赏
  • 举报
回复
轮转算法只是其中一种,也有可能是过一秒后重新加到就绪队列中而已。
1秒对CPU来说,太长了。知道主频1G,2G是什么概念吗?时间频率
dracularking 2012-08-31
  • 打赏
  • 举报
回复
我想系統有一個計時不間斷的時鐘,在java進程時間片獲得輪轉執行時,查詢系統時鐘當前時刻并記錄,每次獲得執行時查詢是否時差超過1秒,直到剛好等於或大於1秒,這樣時間就不會受到輪轉時間片的誤差影響。
MiceRice 2012-08-31
  • 打赏
  • 举报
回复
有点这么个意思,但实际上轮转时间片远远短于 1ms。

另外操作系统处理的时候,主要是在就绪状态的队列中调度线程的,而sleep的线程是在sleep完毕后,才进入就绪队列,然后等待操作系统调度。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧