本文目錄一覽:
- 1、JAVA中如何控制線程的啟動與暫停
- 2、java啟動一個線程是用run()還是start()?run()和start()的區別?
- 3、在java中啟動線程使用run()還是start()?
- 4、Java線程怎樣使用?
JAVA中如何控制線程的啟動與暫停
線程的狀態表示線程正在進行的活動以及在此時間段內所能完成的任務.線程有創建,可運行,運行中,阻塞,死亡五中狀態.一個具有生命的線程,總是處於這五種狀態之一:
1.創建狀態
使用new運算符創建一個線程後,該線程僅僅是一個空對象,系統沒有分配資源,稱該線程處於創建狀態(new thread)
2.可運行狀態
使用start()方法啟動一個線程後,系統為該線程分配了除CPU外的所需資源,使該線程處於可運行狀態(Runnable)
3.運行中狀態
Java運行系統通過調度選中一個Runnable的線程,使其佔有CPU並轉為運行中狀態(Running).此時,系統真正執行線程的run()方法.
4.阻塞狀態
一個正在運行的線程因某種原因不能繼續運行時,進入阻塞狀態(Blocked)
5.死亡狀態
線程結束後是死亡狀態(Dead)
創建線程和啟動線程並不相同,在一個線程對新線程的Thread對象調用start()方法之前,這個新線程並沒有真正開始執行。Thread對象在其線程真正啟動之前就已經存在了,而且其線程退出之後仍然存在。這可以讓您控制或獲取關於已創建的線程的信息,即使線程還沒有啟動或已經完成了。
通常在構造器中通過start()啟動線程並不是好主意。這樣做,會把部分構造的對象暴露給新的線程。如果對象擁有一個線程,那麼它應該提供一個啟動該線程的start()或init()方法,而不是從構造器中啟動它。
結束Java線程
Java線程會以以下三種方式之一結束:
Java線程到達其run()方法的末尾。
Java線程拋出一個未捕獲到的Exception或Error。
另一個Java線程調用一個棄用的stop()方法。棄用是指這些方法仍然存在,但是您不應該在新代碼中使用它們,並且應該盡量從現有代碼中除去它們。
當Java程序中的所有線程都完成時,程序就退出了。
java啟動一個線程是用run()還是start()?run()和start()的區別?
啟動線程肯定要用start()方法。當用start()開始一個線程後,線程就進入就緒狀態,使線程所代表的虛擬處理機處於可運行狀態,這意味著它可以由JVM調度並執行。這並不意味著線程就會立即運行。當cpu分配給它時間時,才開始執行run()方法(如果有的話)。START()是方法,它調用RUN()方法.而RUN()方法是你必須重寫的. run()方法中包含的是線程的主體
在java中啟動線程使用run()還是start()?
java線程有兩種:一種是繼承自Thread類.Thread 類是一個具體的類,即不是抽象類,該類封裝了線程的行為。要創建一個線程,程序員必須創建一個從 Thread 類導出的新類。程序員通過覆蓋 Thread 的 run() 函數來完成有用的工作。用戶並不直接調用此函數;而是通過調用 Thread 的 start() 函數,該函數再調用 run()。
另一種是實現Runnable介面,此介面只有一個函數,run(),此函數必須由實現了此介面的類實現。
Java線程怎樣使用?
多進程是指操作系統能同時運行多個任務(程序),多線程是指在同一程序中有多個順序流在執行。
在java中創建一個線程有兩種方法:
package com.thread;
public class ThreadTest1 {
public static void main(String[] args) {
Runnable1 r = new Runnable1();
//r.run();並不是線程開啟,而是簡單的方法調用
Thread t = new Thread(r);//創建線程
//t.run(); //如果該線程是使用獨立的 Runnable 運行對象構造的,則調用該 Runnable 對象的 run 方法;否則,該方法不執行任何操作並返回。
t.start(); //線程開啟
for (int i = 0; i 100; i++) {
System.out.println(“main:”+i);
}
}
}
class Runnable1 implements Runnable{
public void run() {
for (int i = 0; i 100; i++) {
System.out.println(“Thread—–:”+i);
}
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/280557.html