国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

并發(fā)學(xué)習(xí)筆記(3)

CntChen / 3561人閱讀

摘要:死亡狀態(tài)終止?fàn)顟B(tài)線程完成執(zhí)行后的狀態(tài)。守護(hù)線程唯一的用途就是為其他線程服務(wù)。計(jì)時(shí)線程就是一個(gè)守護(hù)線程它定時(shí)地發(fā)送計(jì)時(shí)器滴答信號(hào)給其他線程或清空過(guò)時(shí)的高速緩存項(xiàng)的線程。

雖是讀書(shū)筆記,但是如轉(zhuǎn)載請(qǐng)注明出處 http://segmentfault.com/blog/exploring/
.. 拒絕伸手復(fù)制黨

Thread 線程的幾種狀態(tài)

線程具有新建、可運(yùn)行、阻塞、等待、定時(shí)等待、死亡六種。線程的狀態(tài)完全包含了一個(gè)線程從新建到運(yùn)行,最后到結(jié)束的整個(gè)生命周期,

線程狀態(tài)的具體信息如下:

NEW(新建狀態(tài)、初始化狀態(tài)):線程對(duì)象已經(jīng)被創(chuàng)建,但是還沒(méi)有被啟動(dòng)時(shí)的狀態(tài)。這段時(shí)間就是在我們調(diào)用new命令之后,調(diào)用start()方法之前

    public enum State {
        /**
         * Thread state for a thread which has not yet started.
         */
        NEW,      

RUNNABLE(可運(yùn)行狀態(tài)、就緒狀態(tài)):在我們調(diào)用了線程的start()方法之后線程所處的狀態(tài)。處于RUNNABLE狀態(tài)的線程在JAVA虛擬機(jī)(JVM)上是運(yùn)行著的,但是它可能還正在等待操作系統(tǒng)分配給它相應(yīng)的運(yùn)行資源以得以運(yùn)行。

一旦一個(gè)線程開(kāi)始運(yùn)行,它不必始終保持運(yùn)行。運(yùn)行中的線程可能被中斷,為了讓其他線程獲得運(yùn)行機(jī)會(huì) -- 線程調(diào)度。 現(xiàn)在所有的桌面和服務(wù)器OS都使用搶占式調(diào)用

 /**
         * Thread state for a runnable thread.  A thread in the runnable
         * state is executing in the Java virtual machine but it may
         * be waiting for other resources from the operating system
         * such as processor.
         */
        RUNNABLE,

BLOCKED(阻塞狀態(tài)、被中斷運(yùn)行):當(dāng)一個(gè)線程試圖獲取一個(gè)內(nèi)部的對(duì)象鎖,而該鎖被其他線程持有,則該線程進(jìn)入阻塞狀態(tài);當(dāng)所有其他線程釋放該鎖,并且線程調(diào)度器要允許本線程持有它的時(shí)候,該線程將變成非阻塞狀態(tài)。

        /**
         * Thread state for a thread blocked waiting for a monitor lock.
         * A thread in the blocked state is waiting for a monitor lock
         * to enter a synchronized block/method or
         * reenter a synchronized block/method after calling
         * {@link Object#wait() Object.wait} .
         */
        BLOCKED,

當(dāng)線程等待另一個(gè)線程通知調(diào)度器的一個(gè)條件時(shí),它自己進(jìn)入等待狀態(tài)。
當(dāng)前線程調(diào)用了java.lang.Object.wait()java.lang.Thread.join()或者等待java.util.concurrent庫(kù)中的LockCondition時(shí),就會(huì)進(jìn)入等待狀態(tài)

比如一個(gè)線程調(diào)用了某個(gè)對(duì)象的wait()方法,正在等待其它線程調(diào)用這個(gè)對(duì)象的notify()或者notifyAll()(這兩個(gè)方法同樣是繼承自O(shè)bject類)方法來(lái)喚醒它;或者一個(gè)線程調(diào)用了另一個(gè)線程的join()(這個(gè)方法屬于Thread類)方法,正在等待這個(gè)方法運(yùn)行結(jié)束。

        /**
         * Thread state for a waiting thread.
         * A thread is in the waiting state due to calling one of the
         * following methods:
         * 
    *
  • {@link Object#wait() Object.wait} with no timeout
  • *
  • {@link #join() Thread.join} with no timeout
  • *
  • {@link LockSupport#park() LockSupport.park}
  • *
* *

A thread in the waiting state is waiting for another thread to * perform a particular action. * * For example, a thread that has called Object.wait() * on an object is waiting for another thread to call * Object.notify() or Object.notifyAll() on * that object. A thread that has called Thread.join() * is waiting for a specified thread to terminate. */ WAITING,

TIMED_WAITING(定時(shí)等待狀態(tài)):當(dāng)前線程調(diào)用了java.lang.Object.wait(long timeout)java.lang.Thread.join(long millis)java.util.concurrent.locks.LockSupport.packNanos(long nanos)java.util.concurrent.locks.LockSupport.packUntil(long deadline 四個(gè)方法中的任意一個(gè),進(jìn)入等待狀態(tài),但是與WAITING狀態(tài)不同的是,它有一個(gè)最大等待時(shí)間,即使等待的條件仍然沒(méi)有滿足,只要到了這個(gè)時(shí)間它就會(huì)自動(dòng)醒來(lái)。

         * Thread state for a waiting thread with a specified waiting time.
         * A thread is in the timed waiting state due to calling one of
         * the following methods with a specified positive waiting time:
         * 
    *
  • {@link #sleep Thread.sleep}
  • *
  • {@link Object#wait(long) Object.wait} with timeout
  • *
  • {@link #join(long) Thread.join} with timeout
  • *
  • {@link LockSupport#parkNanos LockSupport.parkNanos}
  • *
  • {@link LockSupport#parkUntil LockSupport.parkUntil}
  • *
*/ TIMED_WAITING,

TERMINATED(死亡狀態(tài)、終止?fàn)顟B(tài)):

線程完成執(zhí)行后的狀態(tài)。線程執(zhí)行完run()方法中的全部代碼,從該方法中退出,進(jìn)入TERMINATED狀態(tài)。

還有一種情況是run()在運(yùn)行過(guò)程中拋出了一個(gè)異常,而這個(gè)異常沒(méi)有被程序捕獲,導(dǎo)致這個(gè)線程異常終止進(jìn)入TERMINATED狀態(tài)

        /**
         * Thread state for a terminated thread.
         * The thread has completed execution.
         */
        TERMINATED;
    }

線程的屬性

線程的屬性:線程優(yōu)先級(jí),守護(hù)線程,線程組以及處理未捕獲異常的處理器。

線程優(yōu)先級(jí)

java語(yǔ)言,每一個(gè)線程有一個(gè)優(yōu)先級(jí). 默認(rèn)情況,一個(gè)線程繼承它父線程的優(yōu)先級(jí)。

可以用setPriority方法降低或提高任何線程的優(yōu)先級(jí)。 使用yield()方法讓當(dāng)前執(zhí)行的線程處于讓步,如果有其他的runnable線程具有至少與此線程同樣的優(yōu)先級(jí),那么這些線程接下來(lái)會(huì)被調(diào)度。

java   /**
     * The minimum priority that a thread can have.
     */
    public final static int MIN_PRIORITY = 1;

   /**
     * The default priority that is assigned to a thread.
     */
    public final static int NORM_PRIORITY = 5;

    /**
     * The maximum priority that a thread can have.
     */
    public final static int MAX_PRIORITY = 10;
守護(hù)線程

可以通過(guò)調(diào)用

t.setDaemon(true);

將線程轉(zhuǎn)換為守護(hù)線程。守護(hù)線程唯一的用途就是為其他線程服務(wù)。
計(jì)時(shí)線程就是一個(gè)守護(hù)線程:它定時(shí)地發(fā)送“計(jì)時(shí)器滴答”信號(hào)給其他線程或清空過(guò)時(shí)的高速緩存項(xiàng)的線程。

當(dāng)只剩下守護(hù)線程,JVM就退出了。守護(hù)線程不應(yīng)該去訪問(wèn)任何固有資源,如文件,數(shù)據(jù)庫(kù),因?yàn)樗鼤?huì)在任何時(shí)候甚至在一個(gè)操作中發(fā)生中斷。

未捕獲異常處理器

線程run方法不能跑出任何被檢測(cè)的異常,但是不被檢測(cè)的異常會(huì)導(dǎo)致線程終止,這種情況,線程就死亡了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/64365.html

相關(guān)文章

  • Java 并發(fā)學(xué)習(xí)筆記(二)

    摘要:請(qǐng)參看前一篇文章并發(fā)學(xué)習(xí)筆記一原子性可見(jiàn)性有序性問(wèn)題六等待通知機(jī)制什么是等待通知機(jī)制當(dāng)線程不滿足某個(gè)條件,則進(jìn)入等待狀態(tài)如果線程滿足要求的某個(gè)條件后,則通知等待的線程重新執(zhí)行。經(jīng)極客時(shí)間并發(fā)編程實(shí)戰(zhàn)專欄內(nèi)容學(xué)習(xí)整理 請(qǐng)參看前一篇文章:Java 并發(fā)學(xué)習(xí)筆記(一)——原子性、可見(jiàn)性、有序性問(wèn)題 六、等待—通知機(jī)制 什么是等待通知—機(jī)制?當(dāng)線程不滿足某個(gè)條件,則進(jìn)入等待狀態(tài);如果線程滿足要...

    zgbgx 評(píng)論0 收藏0
  • Java 并發(fā)學(xué)習(xí)筆記(一)——原子性、可見(jiàn)性、有序性問(wèn)題

    摘要:最后,總結(jié)一下,導(dǎo)致并發(fā)問(wèn)題的三個(gè)源頭分別是原子性一個(gè)線程在執(zhí)行的過(guò)程當(dāng)中不被中斷。可見(jiàn)性一個(gè)線程修改了共享變量,另一個(gè)線程能夠馬上看到,就叫做可見(jiàn)性。 計(jì)算機(jī)的 CPU、內(nèi)存、I/O 設(shè)備的速度一直存在較大的差異,依次是 CPU > 內(nèi)存 > I/O 設(shè)備,為了權(quán)衡這三者的速度差異,主要提出了三種解決辦法: CPU 增加了緩存,均衡和內(nèi)存的速度差異 發(fā)明了進(jìn)程、線程,分時(shí)復(fù)用 CP...

    Chao 評(píng)論0 收藏0
  • Go語(yǔ)言核心36講(Go語(yǔ)言實(shí)戰(zhàn)與應(yīng)用十二)--學(xué)習(xí)筆記

    摘要:除此之外,把并發(fā)安全字典封裝在一個(gè)結(jié)構(gòu)體類型中,往往是一個(gè)很好的選擇。請(qǐng)看下面的代碼如上所示,我編寫(xiě)了一個(gè)名為的結(jié)構(gòu)體類型,它代表了鍵類型為值類型為的并發(fā)安全字典。在這個(gè)結(jié)構(gòu)體類型中,只有一個(gè)類型的字段。34 | 并發(fā)安全字典sync.Map (上)我們今天再來(lái)講一個(gè)并發(fā)安全的高級(jí)數(shù)據(jù)結(jié)構(gòu):sync.Map。眾所周知,Go 語(yǔ)言自帶的字典類型map并不是并發(fā)安全的。前導(dǎo)知識(shí):并發(fā)安全字典誕生...

    不知名網(wǎng)友 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<