成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

多線程學(xué)習(xí)筆記(2):多線程基礎(chǔ)

HelKyle / 885人閱讀

摘要:和方法用來設(shè)置線程是否成為守護線程和判斷線程是否是守護線程。守護線程依賴于創(chuàng)建它的線程,隨它的消亡而消亡。使用提供的方法,提醒線程終止,但是否真正終止由線程自己決定。參考實戰(zhàn)高并發(fā)程序設(shè)計多線程干貨系列一多線程基礎(chǔ)

一、如何創(chuàng)建多線程 1、繼承Thread類
public class MyThread extends Thread {
    @Override
    public void run() {
        super.run();
        System.out.println("MyThread");
    }
}

public class Run {
    public static void main(String [] args){
        MyThread thread = new MyThread();
        thread.start();
    }
}

這里需要注意的是,run()方法里寫的是線程執(zhí)行的動作,而start()是創(chuàng)建線程并運行。

2、實現(xiàn)Runable接口
public class MyRunnable implements Runnable{
    private int num;
    public MyRunnable(){
        num++;
    }
    @Override
    public void run(){
        System.out.println("It"s the " + num + " Thread");
    }
}

public class Run {
    public static void main(String [] args){
        MyRunnable runnable = new MyRunnable();
        Thread thread = new Thread(runnable);
        thread.start();
        System.out.println("運行結(jié)束");
    }
}
二、線程的狀態(tài)

https://user-gold-cdn.xitu.io...

三、上下文切換

在一個核運行線程時,如果當前線程需要暫停轉(zhuǎn)去運行其他線程,這個行為就叫做上下文切換。
但是某個線程暫停轉(zhuǎn)去運行其他線程后,要恢復(fù)這個線程時,需要從上次暫停的地方繼續(xù)執(zhí)行,這就需要CPU記錄一些數(shù)據(jù)來幫助恢復(fù)。(比如程序計數(shù)器,CPU寄存器等等)
因此可以說,上下文切換就是存儲和恢復(fù)CPU狀態(tài)的,能夠使線程從斷點繼續(xù)執(zhí)行。

四、Thread常用方法

https://user-gold-cdn.xitu.io...

1、類方法

(1)sleep()方法

這個方法是讓線程暫停(休眠)一段時間。

sleep(long millis)     //參數(shù)為毫秒
sleep(long millis,int nanoseconds)    //第一參數(shù)為毫秒,第二個參數(shù)為納秒

調(diào)用了sleep()方法,被休眠的線程會讓出CPU給其他線程,但是需要注意的是,它不會讓出鎖,也就是說線程雖然休眠了,但是依舊保持本來有的鎖。
另外,當休眠時間結(jié)束之后,并不一定會立即執(zhí)行,因為此時可能還有其他線程在執(zhí)行。

(2)yield()方法

yield()與sleep()方法類似,同樣讓出CPU,不讓出對象鎖。但是不同點在于,yield不會傳入?yún)?shù),并且調(diào)用yield后,線程會進入就緒狀態(tài),隨時等待重新獲得CPU時間片。而調(diào)用sleep后,線程會進入阻塞狀態(tài)。

并且,yield方法只允許和當前線程擁有相同優(yōu)先級的線程獲取CPU。

2、對象方法

(1)isAlive()方法
判斷當前線程是否活躍?;钴S是指線程處于就緒或者運行的狀態(tài)。

(2)join()方法
如果一個主線程啟動了一個子線程,并且希望子線程執(zhí)行完畢后再結(jié)束,那么就可以調(diào)用join()方法,即等待線程對象銷毀。

(3)setDaemon和isDaemon方法
用來設(shè)置線程是否成為守護線程和判斷線程是否是守護線程。
守護線程依賴于創(chuàng)建它的線程,隨它的消亡而消亡。

https://user-gold-cdn.xitu.io...

3、其他方法

(1)線程的停止

停止線程一般有三種方法:
① 調(diào)用stop()函數(shù),這個方法實際上已經(jīng)廢棄了,因為它會立即終止線程,并且會釋放所有的鎖,因此可能會造成不可預(yù)期的結(jié)果。
自定義一個變量,當這個變量發(fā)生改變時,提醒線程終止。
③ 使用JDK提供的interrupt方法,提醒線程終止,但是否真正終止由線程自己決定。
(注意:線程在休眠時中斷,會拋出異常,此時只能通過interrupt方法)

(2)wait和notify方法

這兩個方法是Object類的方法,也就是說對所有對象都可以調(diào)用。

調(diào)用了wait方法,線程就會停止執(zhí)行,進入一個隊列中,等待notify方法去喚醒,但是notify方法只會隨機喚醒一個線程,而notifyAll可以喚醒所有線程。
需要注意的是wait會釋放鎖,這是與sleep的不同之處。

參考:《實戰(zhàn)Java高并發(fā)程序設(shè)計》
Java 多線程干貨系列—(一)Java 多線程基礎(chǔ) https://juejin.im/post/5907bb...

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75146.html

相關(guān)文章

  • java&javaweb學(xué)習(xí)筆記(匯總)

    摘要:我的學(xué)習(xí)筆記匯總標簽筆記分為兩大部分和筆記內(nèi)容主要是對一些基礎(chǔ)特性和編程細節(jié)進行總結(jié)整理,適合了解基礎(chǔ)語法,想進一步深入學(xué)習(xí)的人如果覺得不錯,請給,這也是對我的鼓勵,有什么意見歡迎留言反饋目錄基礎(chǔ)鞏固筆記反射基礎(chǔ)鞏固筆記泛型基礎(chǔ)鞏 我的java&javaweb學(xué)習(xí)筆記(匯總) 標簽: java [TOC] 筆記分為兩大部分:javase和javaweb javase javawe...

    yagami 評論0 收藏0
  • Java基礎(chǔ)知識學(xué)習(xí)筆記(1)

    摘要:并沒有對方法進行加同步鎖,所以是非線程安全的。相同情況下使用相比使用僅能獲得左右的性能提升,但卻要冒多線程不安全的風(fēng)險。水池異常表示程序可以處理的異常,可以捕獲且可能恢復(fù)。 一、String, StringBuffer, StringBuilder 1、可變性 (1)String類型是使用一個final修飾的字符數(shù)組,因此它是不可變的。 private final char value...

    Leck1e 評論0 收藏0
  • Python

    摘要:最近看前端都展開了幾場而我大知乎最熱語言還沒有相關(guān)。有關(guān)書籍的介紹,大部分截取自是官方介紹。但從開始,標準庫為我們提供了模塊,它提供了和兩個類,實現(xiàn)了對和的進一步抽象,對編寫線程池進程池提供了直接的支持。 《流暢的python》閱讀筆記 《流暢的python》是一本適合python進階的書, 里面介紹的基本都是高級的python用法. 對于初學(xué)python的人來說, 基礎(chǔ)大概也就夠用了...

    dailybird 評論0 收藏0
  • 線程三分鐘就可以入個門了!

    摘要:系統(tǒng)級線程核心級線程由操作系統(tǒng)內(nèi)核進行管理。值得注意的是多線程的存在,不是提高程序的執(zhí)行速度。實現(xiàn)多線程上面說了一大堆基礎(chǔ),理解完的話。虛擬機的啟動是單線程的還是多線程的是多線程的。 前言 之前花了一個星期回顧了Java集合: Collection總覽 List集合就這么簡單【源碼剖析】 Map集合、散列表、紅黑樹介紹 HashMap就是這么簡單【源碼剖析】 LinkedHashMa...

    awkj 評論0 收藏0
  • Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師(全網(wǎng)最強)

    摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進步歡迎點贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...

    Scorpion 評論0 收藏0

發(fā)表評論

0條評論

HelKyle

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<