国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

香港云服务器
服務(wù)器之家 - 編程語言 - JAVA教程 - Java 線程的生命周期詳細(xì)介紹及實(shí)例代碼

Java 線程的生命周期詳細(xì)介紹及實(shí)例代碼

2020-06-24 12:14Java教程網(wǎng) JAVA教程

這篇文章主要介紹了Java 線程的生命周期的相關(guān)資料,并附簡單實(shí)例代碼,幫助大家理解,需要的朋友可以參考下

當(dāng)線程被創(chuàng)建并啟動之后,它既不是一啟動就進(jìn)入執(zhí)行狀態(tài),也不是一直處于執(zhí)行狀態(tài),在其生命周期中,要經(jīng)過“新建(New)”、“就緒(Runnable)”、“運(yùn)行(Running')”、“阻塞(Blocked)”和“死亡(Dead)”五種狀態(tài)。線程在創(chuàng)建之后,不可能一直霸占著CPU獨(dú)立運(yùn)行,需要在多個線程之間切換,所以大部分時間處于運(yùn)行、阻塞之間切換。

 一、線程的狀態(tài)

線程的存在有幾種不同的狀態(tài),如下:

  1. New狀態(tài)
  2. Ready狀態(tài)
  3. Running狀態(tài)
  4. Dead狀態(tài)
  5. Non Runnable狀態(tài)

1、New狀態(tài)

New狀態(tài)是線程已經(jīng)被創(chuàng)建,但是還未開始運(yùn)行的狀態(tài)。此狀態(tài)通過調(diào)用線程的start()方法可讓線程運(yùn)行。

2、Runnable狀態(tài)

Runnable狀態(tài)可稱為準(zhǔn)備運(yùn)行狀態(tài),也可稱為隊列,此狀態(tài)通過調(diào)用線程的start()方法可讓線程運(yùn)行。
線程調(diào)度器決定要運(yùn)行哪些線程,且線程運(yùn)行多久。

3、Running狀態(tài)

如果一個線程正在執(zhí)行中,那么它處于Running狀態(tài)。

4、Dead狀態(tài)

一旦某個線程進(jìn)入了Dead狀態(tài),那么它就再也不能運(yùn)行了。

5、Non runnable狀態(tài)

  1. 某個正在運(yùn)行的線程可轉(zhuǎn)變到Non runnable狀態(tài),這取決于運(yùn)行情況。
  2. 某個線程還可以一直保持Non runnable狀態(tài),直到滿足的條件出現(xiàn)。
  3. 某個Non runnable狀態(tài)的線程不能直接跳轉(zhuǎn)到運(yùn)行狀態(tài),而是必須先轉(zhuǎn)變?yōu)镽unnable狀態(tài)。
  4. 睡眠Sleeping:線程睡眠指定的時間。
  5. I/O阻塞:線程等待,直到阻塞操作的完成。
  6. join阻塞:線程等待,直到另一個線程執(zhí)行完成。
  7. 等待通知:線程等待另一個線程的通知。
  8. 鎖機(jī)制阻塞:線程等待,直到指定的鎖被釋放,獲得鎖。

Java虛擬機(jī)JVM根據(jù)線程的優(yōu)先級和調(diào)度原則執(zhí)行線程。

二、線程調(diào)度器

在JVM中,線程調(diào)度器的實(shí)現(xiàn)通常基于以下兩種策略:

搶占式調(diào)度策略
分時調(diào)度策略或Round-robin循環(huán)調(diào)度策略

線程調(diào)度器的實(shí)現(xiàn)與平臺無關(guān),因此線程的調(diào)度是不可預(yù)測的。

三、線程的優(yōu)先級

JVM會為每一個新創(chuàng)建的線程分配一個優(yōu)先級。

0級:這是最低的優(yōu)先級
5級:這是普通的優(yōu)先級
10級:這是最高的優(yōu)先級

為了保存這些值,線程類有三個相應(yīng)的變量:

  1. public static final int MIN_PRIORITY
  2. public static final int NORM_PRIORITY
  3. public static final int MAX_PRIORITY

一個線程首先會繼承其父線程的優(yōu)先級,每一個線程默認(rèn)的優(yōu)先級是5級(Normal優(yōu)先級),主線程的默認(rèn)優(yōu)先級為5級。

可以通過setPriority(int priority)方法來設(shè)置線程的優(yōu)先級。

public final void setPriority(int priority)
public void getPriority();

用戶定義的線程,其默認(rèn)的線程名為Thread+序號,序號從0開始,比如第一個線程為Thread0。
線程名可以通過setName(String name)方法進(jìn)行設(shè)置,可使用getName()方法獲得線程的名字。

public final void setName(String name)
public final String getName().

實(shí)例

下面看一個例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package demo.ch;
 
public class UserThread extends Thread {
  UserThread() {
    super();
  }
 
  UserThread(String name) {
    super(name);
  }
 
  public void run() {
    System.out.println("thread started running..");
  }
 
  public static void main(String[] args) {
    UserThread thread1 = new UserThread("Thread1");
    UserThread thread2 = new UserThread("Thread2");
 
    System.out.println("Thread 1 initial name and priority");
    System.out.println("name:" + thread1.getName());
    System.out.println("priority:" + thread1.getPriority());
 
    System.out.println("Thread 2 initial name and priority");
    System.out.println("name:" + thread2.getName());
    System.out.println("priority:" + thread2.getPriority());
    System.out.println("");
 
    thread1.setPriority(6);
    thread2.setPriority(9);
 
    System.out.println("Thread 1 initial name and priority");
    System.out.println("name:" + thread1.getName());
    System.out.println("priority:" + thread1.getPriority());
 
    System.out.println("Thread 2 initial name and priority");
    System.out.println("name:" + thread2.getName());
    System.out.println("priority:" + thread2.getPriority());
    System.out.println("");
 
    thread1.start();
    thread2.start();
 
    for(int i=0; i<5; i++)
      System.out.println("main method i value: " + i);
  }
}

輸出結(jié)果:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Thread 1 initial name and priority
name:Thread1
priority:5
Thread 2 initial name and priority
name:Thread2
priority:5
 
Thread 1 initial name and priority
name:Thread1
priority:6
Thread 2 initial name and priority
name:Thread2
priority:9
 
main method i value: 0
main method i value: 1
thread started running..
main method i value: 2
thread started running..
main method i value: 3
main method i value: 4

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

延伸 · 閱讀

精彩推薦
240
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 精品视频一区二区三区四区 | 久久一精品 | 99精品欧美一区二区三区 | 精品国产一区二区三区高潮视 | www.亚洲 | 看污片网站 | 国产精品久久久久久久久久久久久 | 日本一区二区在线视频 | 国产精品18久久久久久久久 | 亚洲97| 成人免费xxxxx在线观看 | 黄色成人在线视频 | 亚洲精品电影网在线观看 | 999国产在线 | 亚洲天天操| 久久久国产日韩 | 欧美一区免费 | а√在线中文在线新版 | 亚洲精选久久 | 涩涩视频在线看 | 免费观看黄视频网站 | 亚洲视频精品在线 | 中文字幕高清 | 精品国产乱码久久久久久牛牛 | 凹凸日日摸日日碰夜夜爽孕妇 | 网友自拍第一页 | 一区二区三区精品视频 | 精品黄色在线观看 | 日韩在线影院 | 亚洲一区二区在线看 | 久久综合伊人 | 黄视频网页| 亚洲精品久久久久久下一站 | 亚洲一区二区三区在线播放 | 成人日韩 | 精品一二三四区 | 午夜精品美女久久久久av福利 | 亚洲精品在线视频 | 九色在线 | 羞羞的视频在线 | 亚洲v在线|