欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java多線程yield心得分享

 更新時間:2013年12月21日 15:22:23   作者:  
前幾天復(fù)習(xí)了一下多線程,發(fā)現(xiàn)有許多網(wǎng)上講的都很抽象,所以,自己把網(wǎng)上的一些案例總結(jié)了一下

一. Thread.yield( )方法:

使當(dāng)前線程從執(zhí)行狀態(tài)(運行狀態(tài))變?yōu)榭蓤?zhí)行態(tài)(就緒狀態(tài))。cpu會從眾多的可執(zhí)行態(tài)里選擇,也就是說,當(dāng)前也就是剛剛的那個線程還是有可能會被再次執(zhí)行到的,并不是說一定會執(zhí)行其他線程而該線程在下一次中不會執(zhí)行到了。

Java線程中有一個Thread.yield( )方法,很多人翻譯成線程讓步。顧名思義,就是說當(dāng)一個線程使用了這個方法之后,它就會把自己CPU執(zhí)行的時間讓掉,讓自己或者其它的線程運行。

打個比方:現(xiàn)在有很多人在排隊上廁所,好不容易輪到這個人上廁所了,突然這個人說:“我要和大家來個競賽,看誰先搶到廁所!”,然后所有的人在同一起跑線沖向廁所,有可能是別人搶到了,也有可能他自己有搶到了。我們還知道線程有個優(yōu)先級的問題,那么手里有優(yōu)先權(quán)的這些人就一定能搶到廁所的位置嗎? 不一定的,他們只是概率上大些,也有可能沒特權(quán)的搶到了。

例子:

復(fù)制代碼 代碼如下:

package com.yield;

public class YieldTest extends Thread {

 public YieldTest(String name) {
  super(name);
 }

 @Override
 public void run() {
  for (int i = 1; i <= 50; i++) {
   System.out.println("" + this.getName() + "-----" + i);
   // 當(dāng)i為30時,該線程就會把CPU時間讓掉,讓其他或者自己的線程執(zhí)行(也就是誰先搶到誰執(zhí)行)
   if (i == 30) {
    this.yield();
   }
  }
 }

 public static void main(String[] args) {
  YieldTest yt1 = new YieldTest("張三");
  YieldTest yt2 = new YieldTest("李四");
  yt1.start();
  yt2.start();
 }
}

運行結(jié)果:

第一種情況:李四(線程)當(dāng)執(zhí)行到30時會CPU時間讓掉,這時張三(線程)搶到CPU時間并執(zhí)行。

第二種情況:李四(線程)當(dāng)執(zhí)行到30時會CPU時間讓掉,這時李四(線程)搶到CPU時間并執(zhí)行。

相關(guān)文章

  • Java中的CompletionService批量異步執(zhí)行詳解

    Java中的CompletionService批量異步執(zhí)行詳解

    這篇文章主要介紹了Java中的CompletionService批量異步執(zhí)行詳解,我們知道線程池可以執(zhí)行異步任務(wù),同時可以通過返回值Future獲取返回值,所以異步任務(wù)大多數(shù)采用ThreadPoolExecutor+Future,需要的朋友可以參考下
    2023-12-12
  • spring boot注解方式使用redis緩存操作示例

    spring boot注解方式使用redis緩存操作示例

    這篇文章主要介紹了spring boot注解方式使用redis緩存操作,結(jié)合實例形式分析了spring boot注解方式使用redis緩存相關(guān)的依賴庫引入、注解使用及redis緩存相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • idea中@Autowired注解下變量報紅的解決

    idea中@Autowired注解下變量報紅的解決

    這篇文章主要介紹了idea中@Autowired注解下變量報紅的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 最新評論