多線程知識(shí)細(xì)節(jié)梳理

1.創(chuàng)建多線程2種方式
1.繼承Thread
2.實(shí)現(xiàn)Runnable 接口
2.繼承Thread用法
class MyThread extends Thread{
private int ticketsCount= 5;//一共5張火車票
private String name;// 窗口 也是線程名字

public MyThread(String name){
    this.name = name;
}

@Override
public void run() {
    while (ticketsCount > 0){
        ticketsCount--; //如果還有票 就賣掉一張
        System.out.println(name+"賣了1張票,剩余票數(shù)為:"+ticketsCount);
    }
}

}
public class TicketsThread {
public static void main(String[] args){
//創(chuàng)建3個(gè)線程 模擬三個(gè)窗口賣票
MyThread mt1 = new MyThread("窗口1");
MyThread mt2 = new MyThread("窗口2");
MyThread mt3 = new MyThread("窗口3");

    //啟動(dòng)這三個(gè)線程 ,也即是窗口 ,開始賣票
    mt1.start();
    mt2.start();
    mt3.start();
}

}

3.實(shí)現(xiàn)Runnable用法
class MyThreadRunnable implements Runnable {
private int ticketsCount = 5 ;//一共5張火車票
@Override
public void run() {
while (ticketsCount > 0){
ticketsCount--;//如果還有票 就賣掉一張
System.out.println(Thread.currentThread().getName()+"賣了1張票,剩余票數(shù)為:"+ticketsCount);
}
}
}

public class TicketsRunnable {
public static void main(String[] args){
MyThreadRunnable mt = new MyThreadRunnable();
//創(chuàng)建三個(gè)線程 來模擬 三個(gè)售票窗口
Thread th1 = new Thread(mt,"窗口1");
Thread th2 = new Thread(mt,"窗口2");
Thread th3 = new Thread(mt,"窗口3");

    //啟動(dòng)這三個(gè)線程 也即是三個(gè)窗口開始賣票
    th1.start();
    th2.start();
    th3.start();
    //線程生命周期 創(chuàng)建-就緒 -阻塞-運(yùn)行狀態(tài)-終止?fàn)顟B(tài)
}

}

4.生命周期流程圖


image.png

知識(shí)細(xì)節(jié):
當(dāng)多線程創(chuàng)建 后執(zhí)行start 就會(huì)進(jìn)入就緒狀態(tài) 不一定馬上執(zhí)行 主要看有沒有cpu資源
如果有馬上執(zhí)行 就會(huì)進(jìn)入運(yùn)行狀態(tài) 運(yùn)行完成 就會(huì)進(jìn)入終止?fàn)顟B(tài)
如果調(diào)用sleep 就會(huì)進(jìn)入阻塞狀態(tài) 讓出cpu資源 讓其他線程執(zhí)行 如果sleep阻塞結(jié)束 該線程就會(huì)進(jìn)入就緒狀態(tài) 重新獲取cpu資源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Java多線程學(xué)習(xí) [-] 一擴(kuò)展javalangThread類 二實(shí)現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 3,112評(píng)論 1 18
  • 本文主要講了java中多線程的使用方法、線程同步、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應(yīng)的一些線程函數(shù)用法、概述等。 首先講...
    李欣陽(yáng)閱讀 2,600評(píng)論 1 15
  • 進(jìn)程和線程 進(jìn)程 所有運(yùn)行中的任務(wù)通常對(duì)應(yīng)一個(gè)進(jìn)程,當(dāng)一個(gè)程序進(jìn)入內(nèi)存運(yùn)行時(shí),即變成一個(gè)進(jìn)程.進(jìn)程是處于運(yùn)行過程中...
    勝浩_ae28閱讀 5,259評(píng)論 0 23
  • 7月20日知識(shí)點(diǎn) 今天的主要內(nèi)容——線程 線程線程的基本概念線程與進(jìn)程的區(qū)別線程的兩種創(chuàng)建方式(掌握)注意線程兩種...
    須臾之北閱讀 14,117評(píng)論 0 4
  • 宇宙能量無處不在,就看你自身自帶的是什么能量。如果你是一個(gè)正能量的人,全身心每個(gè)細(xì)胞、夸克都充滿正能量,當(dāng)然你們吸...
    林卿怡閱讀 566評(píng)論 0 1

友情鏈接更多精彩內(nèi)容