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

分享

3、Thread API的簡單介紹

 Coder編程 2020-02-29

1,、sleep方法

public static void sleep(long millis, int nanos) throws InterruptedException 
public static native void sleep(long millis) throws InterruptedException;

sleep方法的作用是讓當(dāng)前線程暫停執(zhí)行指定時(shí)間,,給執(zhí)行機(jī)會(huì)留給其他線程,但是調(diào)用sleep不會(huì)釋放對(duì)象鎖

1.1,、用TimeUnit代替Thread.sleep

??可以使用TimeUnit類代替Thread.sleep,,TimeUnit是jdk1.5以后增加的一個(gè)枚舉類,對(duì)sleep方法提供了很好的封裝,,可以省去時(shí)間單位的換算,。

思考1:sleep(n)和sleep(0)有什么不同
??線程有Runnable和Waiting兩種狀態(tài),Runnable狀態(tài)又包含就緒狀態(tài)和運(yùn)行狀態(tài),,當(dāng)調(diào)用sleep(n)時(shí),,當(dāng)前線程從運(yùn)行狀態(tài)轉(zhuǎn)為等待狀態(tài),線程被放入等待隊(duì)列,,等待定時(shí)器n秒后的中斷事件,,當(dāng)?shù)竭_(dá)n秒計(jì)時(shí)時(shí),,線程從等待隊(duì)列進(jìn)入到就緒隊(duì)列。需要注意的是等待隊(duì)列里的線程是不參與CPU競爭的,,而就緒隊(duì)列里的線程才會(huì)參與CPU競爭,;
??當(dāng)調(diào)用sleep(0)時(shí),當(dāng)前線程是直接從運(yùn)行狀態(tài)轉(zhuǎn)為就緒狀態(tài)的,,即線程直接進(jìn)入到了就緒隊(duì)列,,就會(huì)參與CPU競爭。當(dāng)然調(diào)用sleep(0)的目的并非真正的讓線程掛起0毫秒,,而是在于讓當(dāng)前線程暫時(shí)放棄CPU,,給執(zhí)行機(jī)會(huì)留給其它線程,相當(dāng)于一個(gè)讓位動(dòng)作,。

思考2:如何喚醒正在睡眠的線程(sleeping)
??調(diào)用Sleep(n)會(huì)使得當(dāng)前線程暫停執(zhí)行指定時(shí)間,,線程進(jìn)入等待隊(duì)列,并且不會(huì)釋放對(duì)象鎖,,這時(shí)線程狀態(tài)就變?yōu)樽枞麪顟B(tài),,如果另外一個(gè)線程調(diào)用被阻塞線程的interrupt方法,那么就可以打斷這種阻塞,,并且會(huì)拋出InterruptedException,,但是如果線程已經(jīng)是死亡的狀態(tài)了,那么嘗試對(duì)其interrupt就會(huì)被忽略,。
類似Object的wait,、Thread的sleep、Thread的join等方法都會(huì)使得線程進(jìn)入阻塞狀態(tài),,調(diào)用Thread的interrupt都會(huì)打斷這種阻塞,。

2、currentThread方法

??currentThread方法返回的是一個(gè)線程實(shí)例,,這個(gè)實(shí)例就是指當(dāng)前代碼正在被哪個(gè)線程調(diào)用的線程實(shí)例,,可以通過這個(gè)方法來獲取線程的相關(guān)的一些信息,比如線程ID,,線程名稱等,。

public static native Thread currentThread();

3、getId方法

??getId方法返回的是線程的ID,,這個(gè)線程ID是在線程初始化時(shí)生成的一個(gè)唯一長整型數(shù)值

public long getId()

??在創(chuàng)建線程的初始化方法里設(shè)置線程ID,,生成線程ID的方法是一個(gè)靜態(tài)同步方法,保證了生成ID的唯一性

private void init(...){
    ...省略...
    // 設(shè)置線程ID
    tid = nextThreadID();
}    
// 生成線程ID
private static synchronized long nextThreadID() {
    return ++threadSeqNumber;
}

4,、getName方法

??getName方法返回的是線程名稱,,在創(chuàng)建線程初始化的時(shí)候生成

public final String getName()

public Thread(Runnable target) {
    init(null, target, "Thread-" + nextThreadNum(), 0);
}

private static synchronized int nextThreadNum() {
    return threadInitNumber++;
}

5、isAlive方法

??isAlive是用來判斷一個(gè)線程是否存活,而判斷一個(gè)線程是否存活在于線程已經(jīng)啟動(dòng)但是還沒有死亡(也就是線程執(zhí)行完畢)

public final native boolean isAlive();

6,、interrupt方法

??interrupt方法用來中斷線程可以中斷Object#wait,、Thread#join、Thread#sleep等各自的一系列方法,,并且會(huì)拋出一個(gè)InterruptedException異常
當(dāng)調(diào)用上述方法時(shí),,會(huì)使得線程進(jìn)入一個(gè)阻塞的狀態(tài),在另一個(gè)線程里調(diào)用某線程的interrupt方法就可以打斷某個(gè)線程的阻塞狀態(tài),。但是打斷并是意味著線程的生命周期已經(jīng)結(jié)束,,僅僅是打斷了了這種阻塞的狀態(tài)。被中斷的線程會(huì)拋出InterruptedException異常,,這個(gè)異常相當(dāng)于是一個(gè)信號(hào)一樣,,通知當(dāng)前線程被打斷了。

7,、interrupted方法與isInterrupted方法

??interrupted():用來判斷當(dāng)前線程是否已經(jīng)中斷,,執(zhí)行后具有將狀態(tài)標(biāo)志置為false的功能

public static boolean interrupted() {
    return currentThread().isInterrupted(true);
}

??isInterrupted():用來判斷某個(gè)線程是否已經(jīng)中斷,不具有清除狀態(tài)標(biāo)志的功能

public boolean isInterrupted() {
    return isInterrupted(false);
}

private native boolean isInterrupted(boolean ClearInterrupted);

8,、join方法

??join方法就是主線程中調(diào)用子線程的join方法,,主線程會(huì)等待子線程執(zhí)行完畢后,才會(huì)繼續(xù)執(zhí)行,。
??join方法底層是調(diào)用Object類的wait方法,因此也必須加對(duì)象鎖

public final synchronized void join(long millis) throws InterruptedException
public final synchronized void join(long millis, int nanos) throws InterruptedException
public final void join() throws InterruptedException {
    join(0);
}

9,、yield方法

??調(diào)用yield方法就是暗示線程調(diào)度執(zhí)行器,,當(dāng)前線程愿意讓出當(dāng)前處理器的使用,給執(zhí)行機(jī)會(huì)留給其他線程,,但是線程調(diào)度執(zhí)行器也可以忽略這個(gè)暗示,,說白了就是這個(gè)讓出了處理器的線程,可以再次被線程調(diào)度執(zhí)行器選中占有處理器從而繼續(xù)執(zhí)行,。

public static native void yield();

    本站是提供個(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)論公約

    類似文章 更多