thread sleep是什么意思,thread.sleep怎么用
thread.sleep的作用是什么:
如何解决写爬虫IP受阻的问题?立即使用。
(一)CPU竞争策略
在操作系统中,CPU竞争的策略有很多。Unix系统采用时间片算法,Windows采用抢占算法。
(1).
在时间片算法中,所有进程都排列在一个队列中。操作系统按顺序给每个进程分配一段时间,即进程允许的运行时间。如果该进程在时间片结束时仍在运行,CPU将被剥离并分配给另一个进程。如果进程在时间片结束前阻塞或结束,CPU会立即切换。调度程序所要做的就是维护一个就绪进程的列表,当一个进程用完它的时间片时,它就被移到队列的末尾。
(2).
抢占式操作系统是指如果一个进程获得了CPU时间,除非放弃使用CPU,否则它会完全占用CPU。所以可以看出,在抢占式操作系统中,操作系统假设所有进程都是“人品好”的,会主动退出CPU。在抢占式操作系统中,假设有几个进程,操作系统会根据它们的优先级和饥饿时间(它们有多长时间没有使用CPU)为它们计算一个整体优先级。操作系统会将CPU分配给具有最高优先级的进程。当一个进程完成执行或者主动挂起时,操作系统会重新计算所有进程的总优先级,然后选择优先级最高的一个,让他控制CPU。
(2)根据以上所述,得出螺纹的功能。Sleep()是告诉操作系统“未来多少毫秒我不参与CPU竞争”;
那么就有两个问题:
(1). thread . sleep(0)的作用是什么?
线的作用。Sleep(0)是“触发操作系统立刻重新进行一次CPU竞争”。竞争的结果可能是当前线程仍然获得CPU的控制权,也可能是另一个线程获得CPU的控制权。这也是我们经常写一个线程的原因。Sleep(0)在大循环中,因为这给了其他线程(比如画图线程)获得CPU控制权的权力,这样接口就不会在那里装死。
(2).假设线程。现在调用Sleep(1000),1秒后这个线程会被唤醒吗?
答案是:不一定。因为你刚刚告诉操作系统:我不想参与接下来1000毫秒的CPU竞争。然后,1000毫秒过去了,可能此时另一个线程正在使用CPU,那么此时操作系统不会重新分配CPU,直到那个线程被挂起或结束;而且,即使此时恰好轮到操作系统分配CPU,当前线程也不一定是整体优先级最高的线程,CPU仍有可能被其他线程抢占。
推荐教程:《java教程》以上是thread.sleep的功能是什么的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。