java线程暂停1s,如何实现?
各位,我的主要意思是,我用Thread.sleep(1000),之后,操作系统不是进程轮转么,JAVA程序是如何知道1000s后的它一定系统给它资源让它活过来呢?
我的猜想:系统进程轮转的时间片很短暂,小于1ms,所以,如果以1ms为单位,系统一定会轮转到java程序,是这样么?求大神指点
[解决办法]
有点这么个意思,但实际上轮转时间片远远短于 1ms。
另外操作系统处理的时候,主要是在就绪状态的队列中调度线程的,而sleep的线程是在sleep完毕后,才进入就绪队列,然后等待操作系统调度。
[解决办法]
我想系有一不的,在java程片得行,查系前刻并,每次得行查是否差超1秒,直到好等於或大於1秒,就不受到片的差影。
[解决办法]
轮转算法只是其中一种,也有可能是过一秒后重新加到就绪队列中而已。
1秒对CPU来说,太长了。知道主频1G,2G是什么概念吗?时间频率
[解决办法]
多线程后,很难控制程序 的先后执行顺序的。
[解决办法]
应该不会非常非常精确的,不过对于人的感觉来说,误差在可接受范围之内,当然如果编写异常精细的程序,java可能不合适了