Java線程的生命周期命名與獲取代碼實(shí)現(xiàn)
一、線程的生命周期
1.五種狀態(tài):新建狀態(tài)、就緒狀態(tài)、運(yùn)行狀態(tài)、阻塞狀態(tài)、消亡狀態(tài)
2.就緒狀態(tài)的線程表示有權(quán)利去獲取CPU的時(shí)間片,CPU時(shí)間片是執(zhí)行權(quán),當(dāng)線程拿到CPU時(shí)間片之后就馬上執(zhí)行run方法,這個(gè)時(shí)候就代表進(jìn)入了運(yùn)行狀態(tài)

二、線程的調(diào)度與控制
通常我們的計(jì)算機(jī)只有一個(gè)CPU,CPU在某一個(gè)時(shí)刻只能執(zhí)行一條指令,線程只有得到CPU時(shí)間片,也就是使用權(quán),才可以執(zhí)行指令。在單CPU的機(jī)器上線程不是并行運(yùn)行的,只有個(gè)在多個(gè)CPU上線程才可以并行運(yùn)行。Java虛擬機(jī)要負(fù)責(zé)線程的調(diào)度,取得CPU的使用權(quán),目前有兩種調(diào)度模型:分時(shí)調(diào)度模型和搶占式調(diào)度模型,Java使用搶占式調(diào)度模型。
分時(shí)調(diào)度模型:所有線程輪流使用CPU的使用權(quán),平均分配每個(gè)線程占用CPU的時(shí)間片;
搶占式調(diào)度模型:優(yōu)先讓優(yōu)先級(jí)高的線程使用CPU,如果線程的優(yōu)先級(jí)相同,那么會(huì)隨機(jī)選擇一個(gè),優(yōu)先級(jí)高的線程獲取CPU時(shí)間片相對(duì)多一些。
線程優(yōu)先級(jí)主要分為三種:MAX_PRIORITY(最高級(jí));MIN_PRIORITY(最低級(jí));NORM_PRIORITY(標(biāo)準(zhǔn))默認(rèn)
package com.bjpowernode.java_learning;
import com.sun.imageio.plugins.tiff.TIFFT4Compressor;
public class D104_1_MultiThreadDispatchAndControl {
public static void main(String[] args) {
//如何獲取當(dāng)前線程對(duì)象
Thread t = Thread.currentThread();
//t保存的內(nèi)存地址指向的是線程是“主線程對(duì)象”
//獲取線程的名字
System.out.println(t.getName());
Thread t2 = new Thread(new Processor104_1());
t2.start();
Thread t3 = new Thread(new Processor104_1());
t3.start();
//可以給線程起名字
Thread t4 = new Thread(new Processor104_1());
t4.setName("t4");
t4.start();
}
}
class Processor104_1 implements Runnable{
public void run() {
Thread t = Thread.currentThread();
System.out.println(t.getName());
}
}

三、源碼
D104_1_MultiThreadDispatchAndControl.java
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的instanceof關(guān)鍵字在Android中的用法實(shí)例詳解
instanceof是Java的一個(gè)二元操作符,和==,>,<是同一類(lèi)東西。接下來(lái)通過(guò)本文給大家介紹Java中的instanceof關(guān)鍵字在Android中的用法,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-07-07
ElasticSearch學(xué)習(xí)之多條件組合查詢(xún)驗(yàn)證及示例分析
這篇文章主要為大家介紹了ElasticSearch 多條件組合查詢(xún)驗(yàn)證及示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
LeetCode程序員面試題之無(wú)重復(fù)字符的最長(zhǎng)子串
Java計(jì)算無(wú)重復(fù)字符的最長(zhǎng)子串是一種常見(jiàn)的字符串處理算法,它的目的是找出一個(gè)字符串中無(wú)重復(fù)字符的最長(zhǎng)子串。該算法可以很好地解決一些字符串處理問(wèn)題,比如尋找字符串中重復(fù)字符的位置,以及計(jì)算字符串中無(wú)重復(fù)字符的最長(zhǎng)子串的長(zhǎng)度。2023-02-02
SpringBoot使用Redis實(shí)現(xiàn)分布式緩存
這篇文章主要介紹了SpringBoot redis分布式緩存實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼解析的非常詳細(xì),感興趣的同學(xué)可以參考閱讀2023-04-04
SpringBoot構(gòu)造器注入循環(huán)依賴(lài)及解決方案
這篇文章主要介紹了SpringBoot構(gòu)造器注入循環(huán)依賴(lài)及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Spring Bean實(shí)例的創(chuàng)建及構(gòu)造器的挑選
這篇文章主要介紹了Spring Bean實(shí)例的創(chuàng)建及構(gòu)造器的挑選,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下2021-04-04
java多線程批量拆分List導(dǎo)入數(shù)據(jù)庫(kù)的實(shí)現(xiàn)過(guò)程
這篇文章主要給大家介紹了關(guān)于java多線程批量拆分List導(dǎo)入數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-10-10
Spring MVC請(qǐng)求參數(shù)的傳遞方式
Spring MVC是一種基于Model-View-Controller(MVC)設(shè)計(jì)模式的輕量級(jí)Web框架,用于Java應(yīng)用程序的開(kāi)發(fā),在處理HTTP請(qǐng)求時(shí),Spring MVC會(huì)涉及到請(qǐng)求參數(shù)的傳遞,本文給大家介紹了Spring MVC請(qǐng)求參數(shù)的傳遞方式,需要的朋友可以參考下2024-10-10

