Java 線程相關(guān)總結(jié)
一、線程的生命周期
1.五種狀態(tài):新建狀態(tài)、就緒狀態(tài)、運行狀態(tài)、阻塞狀態(tài)、消亡狀態(tài)
2.就緒狀態(tài)的線程表示有權(quán)利去獲取CPU的時間片,CPU時間片是執(zhí)行權(quán),當(dāng)線程拿到CPU時間片之后就馬上執(zhí)行run方法,這個時候就代表進入了運行狀態(tài)

二、線程的調(diào)度與控制
通常我們的計算機只有一個CPU,CPU在某一個時刻只能執(zhí)行一條指令,線程只有得到CPU時間片,也就是使用權(quán),才可以執(zhí)行指令。在單CPU的機器上線程不是并行運行的,只有個在多個CPU上線程才可以并行運行。Java虛擬機要負(fù)責(zé)線程的調(diào)度,取得CPU的使用權(quán),目前有兩種調(diào)度模型:分時調(diào)度模型和搶占式調(diào)度模型,Java使用搶占式調(diào)度模型。
分時調(diào)度模型:所有線程輪流使用CPU的使用權(quán),平均分配每個線程占用CPU的時間片;
搶占式調(diào)度模型:優(yōu)先讓優(yōu)先級高的線程使用CPU,如果線程的優(yōu)先級相同,那么會隨機選擇一個,優(yōu)先級高的線程獲取CPU時間片相對多一些。
線程優(yōu)先級主要分為三種:MAX_PRIORITY(最高級);MIN_PRIORITY(最低級);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)前線程對象
Thread t = Thread.currentThread();//t保存的內(nèi)存地址指向的是線程是“主線程對象”
//獲取線程的名字
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());
}
}

三、線程的優(yōu)先級
1.線程優(yōu)先級的獲取的CPU時間片會相對多一點
(1)優(yōu)先級為1-10
(2)最低為1
(3)最高為10
(4)默認(rèn)為5
package com.bjpowernode.java_learning;
public class D105_1_PriorotyOfMultithread {
public static void main(String[] arsg) {
System.out.println(Thread.MAX_PRIORITY);
System.out.println(Thread.MIN_PRIORITY);
System.out.println(Thread.NORM_PRIORITY);
System.out.println("=================");
Thread t1 = new Processor105();
t1.setName("t1");
Thread t2 = new Processor105();
t2.setName("t2");
System.out.println(t1.getPriority());
System.out.println(t2.getPriority());
//設(shè)置優(yōu)先級
t1.setPriority(5);
t2.setPriority(4);
t1.start();
t2.start();
}
}
class Processor105 extends Thread{
public void run() {
for(int i=0;i<5;i++) {
System.out.println(Thread.currentThread().getName()+"--->"+i);
}
}
}

四、源碼:
D105_1_PriorotyOfMultithread.java
https://github.com/ruigege66/Java/blob/master/D105_1_PriorotyOfMultithread.java
D104_1_MultiThreadDispatchAndControl.java
https://github.com/ruigege66/Java/blob/master/D104_1_MultiThreadDispatchAndControl.java
以上就是Java 線程相關(guān)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Java 線程的資料請關(guān)注腳本之家其它相關(guān)文章!
- Java線程阻塞方法sleep()與wait()的全面講解
- 聊聊Java中是什么方法導(dǎo)致的線程阻塞
- java并發(fā)包中CountDownLatch和線程池的使用詳解
- java多線程中執(zhí)行多個程序的實例分析
- Java多線程實現(xiàn)簡易微信發(fā)紅包的方法實例
- Java 線程池的作用以及該如何使用
- 在windows下揪出java程序占用cpu很高的線程并完美解決
- java多線程數(shù)據(jù)分頁處理實例講解
- Java使用多線程異步執(zhí)行批量更新操作方法
- Java線程池配置的一些常見誤區(qū)總結(jié)
- 深入理解 Java、Kotlin、Go 的線程和協(xié)程
- Java線程的6種狀態(tài)及切換教程
- java 優(yōu)雅關(guān)閉線程池的方案
- Java實現(xiàn)多線程模擬龜兔賽跑
- Java線程中賣火車票問題的深入講解
相關(guān)文章
Spring?Boot日志基礎(chǔ)使用之如何設(shè)置日志級別
這篇文章主要介紹了Spring?Boot日志基礎(chǔ)使用設(shè)置日志級別的方法,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09
win10操作系統(tǒng)下重啟電腦java環(huán)境變量失效
這篇文章主要介紹了win10操作系統(tǒng)下重啟電腦java環(huán)境變量失效,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Hibernate使用hbm.xml配置映射關(guān)系解析
這篇文章主要介紹了Hibernate使用hbm.xml配置映射關(guān)系解析,具有一定參考價值,需要的朋友可以了解下。2017-11-11
Mybatis 動態(tài)表名+Map參數(shù)傳遞+批量操作詳解
這篇文章主要介紹了Mybatis 動態(tài)表名+Map參數(shù)傳遞+批量操作詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Springboot公共字段填充及ThreadLocal模塊改進方案
這篇文章主要為大家介紹了Springboot公共字段填充及ThreadLocal模塊改進方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
詳解javaweb中jstl如何循環(huán)List中的Map數(shù)據(jù)
這篇文章主要介紹了詳解javaweb中jstl如何循環(huán)List中的Map數(shù)據(jù)的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10
利用Spring Boot如何開發(fā)REST服務(wù)詳解
這篇文章主要給大家介紹了關(guān)于利用Spring Boot如何開發(fā)REST服務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12
Java實用小技能之快速創(chuàng)建List常用幾種方式
java集合可以說無論是面試、刷題還是工作中都是非常常用的,下面這篇文章主要給大家介紹了關(guān)于Java實用小技能之快速創(chuàng)建List常用的幾種方式,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12

