免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Java中Thread狀態(tài)學習記錄
一個線程創(chuàng)建之后,總是處于其生命周期的4個狀態(tài)之一中。線程的狀態(tài)表明此線 程當前正在進行的活動,而線程的狀態(tài)是可以通過程序來進行控制的,就是說,可以對線程進行操作來改變狀態(tài)。這些操作包括啟動(start)、終止(stop)、睡眠(sleep)、掛起 (suspend)、恢復(resume)、等待(wait)和通知(notify)。每一個操作都對應了一個方法,這些方法是由java.lang提供的。
線程狀態(tài)在Java中是通過一個Thread的內部枚舉State標識的。
Java代碼
public enum State {
/**
* Thread state for a thread which has not yet started.
*/
NEW,
/**
* 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,
/**
* 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,
/**
* Thread state for a waiting thread.
* A thread is in the waiting state due to calling one of the
* following methods:
* <ul>
*   <li>{@link Object#wait() Object.wait} with no timeout</li>
*   <li>{@link #join() Thread.join} with no timeout</li>
*   <li>{@link LockSupport#park() LockSupport.park}</li>
* </ul>
*
* <p>A thread in the waiting state is waiting for another thread to
* perform a particular action.
*
* For example, a thread that has called <tt>Object.wait()</tt>
* on an object is waiting for another thread to call
* <tt>Object.notify()</tt> or <tt>Object.notifyAll()</tt> on
* that object. A thread that has called <tt>Thread.join()</tt>
* is waiting for a specified thread to terminate.
*/
WAITING,
/**
* 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:
* <ul>
*   <li>{@link #sleep Thread.sleep}</li>
*   <li>{@link Object#wait(long) Object.wait} with timeout</li>
*   <li>{@link #join(long) Thread.join} with timeout</li>
*   <li>{@link LockSupport#parkNanos LockSupport.parkNanos}</li>
*   <li>{@link LockSupport#parkUntil LockSupport.parkUntil}</li>
* </ul>
*/
TIMED_WAITING,
/**
* Thread state for a terminated thread.
* The thread has completed execution.
*/
TERMINATED;
}
創(chuàng)建狀態(tài)(Thread.State.NEW)
如果創(chuàng)建了一個線程而沒有啟動它,那么,此線程就處于創(chuàng)建狀態(tài)。比如,下述語句執(zhí)行 以后,使系統(tǒng)有了一個處于創(chuàng)建狀態(tài)的線程myThread:
Thread t= new ThreadClass();
其中,ThreadClass()是Thread的子類,而Thread是由java.lang提供的。
處于創(chuàng)建狀態(tài)的線程還沒有獲得應有的資源,所以,這是一個空的線程。線程只有通過啟動后,系統(tǒng)才會為它分配資源。對處于創(chuàng)建狀態(tài)的線程可以進行兩種操作:一是啟動 (start)操作,使其進入可運行狀態(tài),二是終止(stop)操作,使其進入消亡狀態(tài)。如果進入到消 亡狀態(tài),那么,此后這個線程就不能進入其他狀態(tài),也就是說,它不再存在了。
start方法是對應啟動操作的方法,其具體功能是為線程分配必要的系統(tǒng)資源;將線程設置為可運行狀態(tài),從而可以使系統(tǒng)調度這個線程。
通過調用t.start()啟動一個線程,使該線程進入可運行(Thread.State.RUNNABLE)的狀態(tài)。
由JVM的決定去調度(Scheduler) 在可運行狀態(tài)(Runnable)下的線程,使該線程處于運行 (Running) 狀態(tài),由于JVM的調度會出現(xiàn)不可控性,即不是優(yōu)先級高的先被調用,可能先調用,也可能后調用的的情況。運行狀態(tài)(Running)下,調用禮讓yield()方法,可以使線程回到可運行狀態(tài)(Runnable)下,再次JVM的調度(并不依賴優(yōu)先級)。
線程執(zhí)行完畢或異常退出會進入終止狀態(tài)(Thread.State.TERMINATED)。
其余的還有幾個狀態(tài):
Thread.State.BLOCKED
受阻塞并且正在等待監(jiān)視器鎖的某一線程的線程狀態(tài)。處于受阻塞狀態(tài)的某一線程正在等待監(jiān)視器鎖,以便進入一個同步的塊/方法,或者在調用 Object.wait 之后再次進入同步的塊/方法。
Thread.State.WAITING
某一等待線程的線程狀態(tài)。某一線程因為調用下列方法之一而處于等待狀態(tài):
不帶超時值的 Object.wait
不帶超時值的 Thread.join
LockSupport.park
處于等待狀態(tài)的線程正等待另一個線程,以執(zhí)行特定操作。 例如,已經在某一對象上調用了 Object.wait() 的線程正等待另一個線程,以便在該對象上調用 Object.notify() 或 Object.notifyAll()。已經調用了 Thread.join() 的線程正在等待指定線程終止。
TIMED_WAITING具有指定等待時間的某一等待線程的線程狀態(tài)。某一線程因為調用以下帶有指定正等待時間的方法之一而處于定時等待狀態(tài):
Thread.sleep
帶有超時值的 Object.wait
帶有超時值的 Thread.join
LockSupport.parkNanos
LockSupport.parkUntil
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
并發(fā)編程最基礎的12個面試連環(huán)炮,你答得上幾個?
喚醒指定線程
Java并發(fā)編程之
10 張圖聊聊線程的生命周期和常用 APIs
阿里一面:聊聊Java中線程的生命周期狀態(tài)
Inside AbstractQueuedSynchronizer (1) (此版比較完整)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服