理解线程的挂起,sleep还有阻塞
生活随笔
收集整理的這篇文章主要介紹了
理解线程的挂起,sleep还有阻塞
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
線程是靠cpu來運行的,cpu要運行一個線程(不說別的)最起碼就是要占用cpu時間,象Windows這樣的多任務操作系統,可以允許多個線程同時運行,所謂的同時運行并不是真正的同時運行,而是輪流運行不同的線程,因為cpu速度很快,如果線程不是很多,就會給用戶有所有線程在同時運行的錯覺。cpu的調度都是內核來做的,表面上用戶進程自己執行自己的,其實內核很忙的。他會不斷的掛起某個線程,去執行另一個線程,回頭再恢復那個線程。
先說阻塞,阻塞就是內核突然讓cpu去干別的事情了,用戶你要等待內核返回消息。
然后掛起,掛起其實是用戶主動行為,一旦掛起,線程就不在需要cpu,內核也不需要再考慮它用不用cpu,直到用戶恢復狀態。
sleep(n),他表示用戶線程放棄當前的cpu時間片,n秒后參與cpu使用。sleep(0)是有特殊含義的,他表示此時此刻我放棄cpu時間片,別人可以執行,然后馬上參與cpu競爭。
轉載于:https://www.cnblogs.com/anjianliang/p/5383821.html
總結
以上是生活随笔為你收集整理的理解线程的挂起,sleep还有阻塞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springmvc在启动工程的时候就访问
- 下一篇: Struts2_模块包含 及Actio