Java執行緒調度的方式是:1.協同式執行緒調度,多執行緒系統採用協作式調度,執行緒的執行時間由執行緒本身控制。 2.搶佔式執行緒調度,使用搶佔式調度多執行緒系統,每個執行緒的執行時間將由系統分配。
本教學操作環境:windows7系統、java10版,DELL G3電腦。
1.協同式執行緒調度
多執行緒系統採用協作式調度,執行緒的執行時間由執行緒自行控制,執行緒在自己的工作完成後,主動通知系統切換到另一個執行緒。協作式多執行緒的好處是實現簡單,因為執行緒在完成自己的工作之後才會進行執行緒切換,切換操作對執行緒本身來說是可知的,所以一般不存在執行緒同步問題。其缺點也是顯而易見的:執行緒執行時間無法控制,而且如果一個執行緒的程式碼寫錯了,並且不讓系統進行執行緒切換,那麼程式就會永遠阻塞。
2.搶佔式執行緒調度
使用搶佔式調度多執行緒系統,每個執行緒的執行時間將由系統分配,執行緒的切換不是由進程本身決定的。例如Java中,有一個Thread::yield()方法可以主動放棄執行時間,但是如果想主動取得執行時間,執行緒本身是沒有辦法的。這樣實作執行緒調度,執行緒的執行時間由系統控制,不存在一個執行緒導致整個行程甚至整個系統阻塞的問題。
以上就是Java執行緒調度的兩種方式,希望能對大家有幫助。