1. 程式人生 > >java多執行緒yield

java多執行緒yield

理論上虛擬機器和作業系統會讓優先順序高的的執行緒更多的獲取執行的機會,這個不要與時間片混淆。yield的意思是放手,放棄,一個執行緒呼叫yield意味著它要告訴虛擬機器自己樂意讓其它執行緒佔用自己的位置。這只是一個暗示,並不保證會產生效果(使當前執行緒轉到可執行狀態,runnable)。

看程式碼示例,

  1. class Producer extends Thread  
  2. {  
  3.     publicvoid run()  
  4.     {  
  5.         for(int i = 0; i < 5; i++)  
  6.         {  
  7.             System.out.println("i am producer: producerd item "
     + i);  
  8.             Thread.yield();  
  9.         }  
  10.     }  
  11. }  
  12. class Consumer extends Thread  
  13. {  
  14.     publicvoid run()  
  15.     {  
  16.         for(int i = 0; i < 5; i++)  
  17.         {  
  18.             System.out.println("i am Consumer: Consumed item " + i);  
  19.             Thread.yield();  
  20.         }  
  21.     }  
  22. }  
  23. publicclass JoinAndYieldTestDemo   
  24. {  
  25.     /** 
  26.      * @param args 
  27.      */
  28.     publicstaticvoid main(String[] args)   
  29.     {  
  30.         Thread producer = new Producer();  
  31.         Thread consumer = new Consumer();  
  32.         producer.setPriority(Thread.MIN_PRIORITY);  
  33.         consumer.setPriority(Thread.MAX_PRIORITY);  
  34.         producer.start();  
  35.         consumer.start();  
  36.     }  
  37. }  

轉自:  http://blog.csdn.net/pony_maggie/article/details/43897971

程式建立了名為生產者和消費者的兩個執行緒,前者最小優先順序,後者最大優先順序。呼叫yield方法,兩個執行緒會依次列印,然後將執行機會交給對方,一直這樣進行下去。如果不加yield,結果是先列印完一個,再是另一個。

yield的作用一目瞭然,設定成不同的優先順序,也證明了yield不會受優先順序大小的影響。

相關推薦

java執行yield

理論上虛擬機器和作業系統會讓優先順序高的的執行緒更多的獲取執行的機會,這個不要與時間片混淆。yield的意思是放手,放棄,一個執行緒呼叫yield意味著它要告訴虛擬機器自己樂意讓其它執行緒佔用自己的位置。這只是一個暗示,並不保證會產生效果(使當前執行緒轉到可執行狀態,ru

Java 執行 yield方法

yield()方法 理論上,yield意味著放手,放棄,投降。一個呼叫yield()方法的執行緒告訴虛擬機器它樂意讓其他執行緒佔用自己的位置。這表明該執行緒沒有在做一些緊急的事情。注意,這僅是一個暗示,並不能保證不會產生任何影響。 在Thread.java中yield()定

Java執行系列---“基礎篇”14之 wait,sleep,join,yield,park,unpark,notify等通訊機制對比

1. 執行緒讓步: yield() yield()的作用是讓步。它能讓當前執行緒由“執行狀態”進入到“就緒狀態”,從而讓其它具有相同優先順序的等待執行緒獲取執行權;但是,並不能保證在當前執行緒呼叫yield()之後,其它具有相同優先順序的執行緒就一定能獲得執行權;也有可能是當前執行緒又進入到“執行狀態”繼續

java執行三 wait sleep join yield

一,wait 是object類的方法,並不是執行緒的方法,使用此方法會使當前執行緒進入阻塞狀態,過程中執行緒會釋放cpu資源和鎖資源,獻策韓國你進入等待池,可以通過notify或者notifyall將執行緒喚醒,是執行緒重新進入就緒狀態,在wait,notify和notifyall方法使用過程中

Java執行併發總結】Thread類的常用方法(join、yield等)---執行的基礎操作篇

 啟動(start)   最基本的操作,呼叫Runnable中的run方法,無返回值。 new Thread(new Test()).start(); 休眠(sleep)  使當前執行緒休眠一段時間,預設為毫秒級,最高可以精確到納秒,呼叫的方法為slee

Java執行程式設計核心技術】第一章(執行技能suspend,resume,yield)

1.8 暫停執行緒      在多執行緒中,suspend是暫停執行緒,resume是恢復執行緒的執行.  1.8.1suspend方法和resume方法的使用 public class MyThread extends Thread { private lon

java執行-Thread的yield方法

yield表示當前執行緒申請交出執行權,但並不是一定會交出,依賴於系統的執行緒排程。 因此該方法並不穩定。 class Test { public static void main(String[] args) throws InterruptedException { Te

Java執行初探——yield()方法與join()方法

一、執行緒與程序 1、程序是程式(任務)執行過程,持有資源(共享記憶體,共享檔案)和執行緒,程序是動態性的,如果程式沒有執行就不算一個程序。 2、執行緒是系統中最小的執行單元,同一程序中有多個執行緒,執行緒共享程序的資源 Java中建立現成的方式就不再贅述了,有兩種:(1

三、JAVA執行:Thread API詳細介紹 (sleep、Interrupt、Join、TimeUnit、yield、interrupted、執行優先順序 )

 本章深入分析了Thread的所有API,熟練掌握Thread的API是學好Thread的前提。   執行緒sleep sleep是一個靜態方法,一共有兩個過載方法,一個需要傳入毫秒數,另一個既要傳入毫秒數又要傳入納秒數。   sleep方法介紹

java執行->javayield()方法使用

Thread.yield()方法作用是:暫停當前正在執行的執行緒物件,並執行其他執行緒。yield()應該做的是讓當前執行執行緒回到可執行狀態,以允許具有相同優先順序的其他執行緒獲得執行機會。因此,使用

java執行:4、Java執行的支援(二)後臺執行setDaemon、暫停執行yield

文章目錄 一、設定後臺執行緒 二、yield方法,暫停執行緒讓別的執行緒執行 上篇文章介紹了執行緒實現方式、執行緒的隨機性,大家如需瞭解可參考 java多執行緒:3、Java對多執行緒的支援(一)執行緒實現方式、執行緒的隨機性 這篇我們來看看後臺執行緒setD

Java執行-Thread.yield詳解

http://blog.csdn.net/dabing69221/article/details/17426953 Thread.yield( )方法: 使當前執行緒從執行狀態(執行狀態)變為可執行態(就緒狀態)。cpu會從眾多的可執行態裡選擇,也就是說,當前也就

Java執行之wait,notify,sleep,,yield,join,suspend,resume

Java中的多執行緒是一種搶佔式的機制而不是分時機制。執行緒主要有以下幾種狀態:可執行,執行,阻塞,死亡。搶佔式機制指的是有多個執行緒處於可執行狀態,但是隻有一個執行緒在執行。 當有多個執行緒訪問共享資料的時候,就需要對執行緒進行同步。執行緒中的幾個主要方法的比較:

Java執行中join、yield、sleep方法詳解

在Java多執行緒程式設計中,Thread類是其中一個核心和關鍵的角色。因此,對該類中一些基礎常用方法的理解和熟練使用是開發多執行緒程式碼的基礎。本篇主要總結一下Thread中常用的一些靜態方法的含義及程式碼中的使用。 sleep方法 原始碼如下: /** * Causes the curr

Java執行實現電影院售票案例

某電影院目前正在上映賀歲大片,共有100張票,而它有3個售票視窗,請設計一個程式模擬該電影院售票。 定義Sell類實現Runnable介面,很好的解決了單繼承共享資源問題 public class Sell implements Runnable { // 定義100張票,三個售票

java執行物件鎖、類鎖、同步機制詳解

1.在java多執行緒程式設計中物件鎖、類鎖、同步機制synchronized詳解:     物件鎖:在java中每個物件都有一個唯一的鎖,物件鎖用於物件例項方法或者一個物件例項上面的。     類鎖:是用於一個類靜態方法或者class物件的,一個

Java 執行實現死鎖場景

簡述: 《Java 程式設計思想》  P718 ~ P722 模擬死鎖的場景, 三個人 三根筷子,每個人需要拿到身邊的兩根筷子才能開始吃飯 出現死鎖的場景是,三個人都拿到了右邊的筷子,但是由於筷子都被搶佔,均無法獲得左邊的筷子 Chopstick.java

Java 執行 join和interrupt 方法

簡述: 使用Java多執行緒中join和interrupt函式 《Java程式設計思想》 P669 ~ P670 一個執行緒可以再其他執行緒上呼叫join()方法,其效果是等待一段時間直到第二個執行緒結束才繼續執行。 如果某個執行緒在另一個執行緒t上呼叫t.join(), 此

Java 執行 CountDownLatch 試用

簡述: 使用Java多執行緒的庫,包括 ExecutorService執行緒池, CountDownLatch執行緒執行控制(知道所有啟動的執行緒呼叫完成後,函式才會繼續執行) package test.anialy.multithread; import java.ut

Java執行中Synchronized簡介和Static Synchronized的區別

在進行Java開發時,多執行緒的開發是經常會使用的。首先會問一個小問題啊,在Java中有幾種方法可以建立一個執行緒? 我給的答案是3種。(如果還有其他的請留言告訴我哈。) 1、建立直接繼承自Thread類建立執行緒子類。   步驟如下:a 定義一個子類,同時