久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java中Thread狀態(tài)學(xué)習(xí)記錄

 nacy2012 2015-09-21

 一個(gè)線程創(chuàng)建之后,,總是處于其生命周期的4個(gè)狀態(tài)之一中,。線程的狀態(tài)表明此線 程當(dāng)前正在進(jìn)行的活動(dòng),,而線程的狀態(tài)是可以通過程序來進(jìn)行控制的,,就是說,,可以對(duì)線程進(jìn)行操作來改變狀態(tài),。這些操作包括啟動(dòng)(start),、終止(stop)、睡眠(sleep),、掛起 (suspend),、恢復(fù)(resume)、等待(wait)和通知(notify),。每一個(gè)操作都對(duì)應(yīng)了一個(gè)方法,,這些方法是由java.lang提供的。

線程狀態(tài)在Java中是通過一個(gè)Thread的內(nèi)部枚舉State標(biāo)識(shí)的,。
Java代碼  收藏代碼
  1. public enum State {  
  2.         /** 
  3.          * Thread state for a thread which has not yet started. 
  4.          */  
  5.         NEW,  
  6.    
  7.         /** 
  8.          * Thread state for a runnable thread.  A thread in the runnable 
  9.          * state is executing in the Java virtual machine but it may 
  10.          * be waiting for other resources from the operating system 
  11.          * such as processor. 
  12.          */  
  13.         RUNNABLE,  
  14.    
  15.         /** 
  16.          * Thread state for a thread blocked waiting for a monitor lock. 
  17.          * A thread in the blocked state is waiting for a monitor lock 
  18.          * to enter a synchronized block/method or 
  19.          * reenter a synchronized block/method after calling 
  20.          * {@link Object#wait() Object.wait}. 
  21.          */  
  22.         BLOCKED,  
  23.    
  24.         /** 
  25.          * Thread state for a waiting thread. 
  26.          * A thread is in the waiting state due to calling one of the 
  27.          * following methods: 
  28.          * <ul> 
  29.          *   <li>{@link Object#wait() Object.wait} with no timeout</li> 
  30.          *   <li>{@link #join() Thread.join} with no timeout</li> 
  31.          *   <li>{@link LockSupport#park() LockSupport.park}</li> 
  32.          * </ul> 
  33.          * 
  34.          * <p>A thread in the waiting state is waiting for another thread to 
  35.          * perform a particular action.  
  36.          * 
  37.          * For example, a thread that has called <tt>Object.wait()</tt> 
  38.          * on an object is waiting for another thread to call 
  39.          * <tt>Object.notify()</tt> or <tt>Object.notifyAll()</tt> on 
  40.          * that object. A thread that has called <tt>Thread.join()</tt> 
  41.          * is waiting for a specified thread to terminate. 
  42.          */  
  43.         WAITING,  
  44.    
  45.         /** 
  46.          * Thread state for a waiting thread with a specified waiting time. 
  47.          * A thread is in the timed waiting state due to calling one of 
  48.          * the following methods with a specified positive waiting time: 
  49.          * <ul> 
  50.          *   <li>{@link #sleep Thread.sleep}</li> 
  51.          *   <li>{@link Object#wait(long) Object.wait} with timeout</li> 
  52.          *   <li>{@link #join(long) Thread.join} with timeout</li> 
  53.          *   <li>{@link LockSupport#parkNanos LockSupport.parkNanos}</li> 
  54.          *   <li>{@link LockSupport#parkUntil LockSupport.parkUntil}</li> 
  55.          * </ul> 
  56.          */  
  57.         TIMED_WAITING,  
  58.    
  59.         /** 
  60.          * Thread state for a terminated thread. 
  61.          * The thread has completed execution. 
  62.          */  
  63.         TERMINATED;  
  64.     }  
 創(chuàng)建狀態(tài)(Thread.State.NEW
     如果創(chuàng)建了一個(gè)線程而沒有啟動(dòng)它,,那么,此線程就處于創(chuàng)建狀態(tài),。比如,,下述語句執(zhí)行 以后,使系統(tǒng)有了一個(gè)處于創(chuàng)建狀態(tài)的線程myThread:
         Thread t= new ThreadClass();
其中,,ThreadClass()是Thread的子類,,而Thread是由java.lang提供的。
     處于創(chuàng)建狀態(tài)的線程還沒有獲得應(yīng)有的資源,,所以,,這是一個(gè)空的線程。線程只有通過啟動(dòng)后,,系統(tǒng)才會(huì)為它分配資源,。對(duì)處于創(chuàng)建狀態(tài)的線程可以進(jìn)行兩種操作:一是啟動(dòng) (start)操作,使其進(jìn)入可運(yùn)行狀態(tài),,二是終止(stop)操作,,使其進(jìn)入消亡狀態(tài)。如果進(jìn)入到消 亡狀態(tài),,那么,,此后這個(gè)線程就不能進(jìn)入其他狀態(tài),也就是說,,它不再存在了,。
     start方法是對(duì)應(yīng)啟動(dòng)操作的方法,其具體功能是為線程分配必要的系統(tǒng)資源,;將線程設(shè)置為可運(yùn)行狀態(tài),從而可以使系統(tǒng)調(diào)度這個(gè)線程。 
    通過調(diào)用t.start()啟動(dòng)一個(gè)線程,,使該線程進(jìn)入可運(yùn)行(Thread.State.RUNNABLE)的狀態(tài),。
    由JVM的決定去調(diào)度(Scheduler) 在可運(yùn)行狀態(tài)(Runnable)下的線程,使該線程處于運(yùn)行 (Running) 狀態(tài),由于JVM的調(diào)度會(huì)出現(xiàn)不可控性,即不是優(yōu)先級(jí)高的先被調(diào)用,,可能先調(diào)用,,也可能后調(diào)用的的情況。運(yùn)行狀態(tài)(Running)下,,調(diào)用禮讓yield()方法,,可以使線程回到可運(yùn)行狀態(tài)(Runnable)下,再次JVM的調(diào)度(并不依賴優(yōu)先級(jí)),。
    線程執(zhí)行完畢或異常退出會(huì)進(jìn)入終止?fàn)顟B(tài)(Thread.State.TERMINATED),。
其余的還有幾個(gè)狀態(tài):
Thread.State.BLOCKED
受阻塞并且正在等待監(jiān)視器鎖的某一線程的線程狀態(tài)。處于受阻塞狀態(tài)的某一線程正在等待監(jiān)視器鎖,,以便進(jìn)入一個(gè)同步的塊/方法,,或者在調(diào)用 Object.wait 之后再次進(jìn)入同步的塊/方法。
 Thread.State.WAITING
某一等待線程的線程狀態(tài),。某一線程因?yàn)檎{(diào)用下列方法之一而處于等待狀態(tài):
不帶超時(shí)值的 Object.wait
不帶超時(shí)值的 Thread.join
LockSupport.park
處于等待狀態(tài)的線程正等待另一個(gè)線程,,以執(zhí)行特定操作。 例如,,已經(jīng)在某一對(duì)象上調(diào)用了 Object.wait() 的線程正等待另一個(gè)線程,,以便在該對(duì)象上調(diào)用 Object.notify() 或 Object.notifyAll()。已經(jīng)調(diào)用了 Thread.join() 的線程正在等待指定線程終止,。
TIMED_WAITING具有指定等待時(shí)間的某一等待線程的線程狀態(tài),。某一線程因?yàn)檎{(diào)用以下帶有指定正等待時(shí)間的方法之一而處于定時(shí)等待狀態(tài):
Thread.sleep
帶有超時(shí)值的 Object.wait
帶有超時(shí)值的 Thread.join
LockSupport.parkNanos
LockSupport.parkUntil

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多