(一)基本概念多線程
①程序:一個指令的集合;ide
②進程:正在執行中的程序;(資源分配的單位)測試
③線程:進程中的一個執行路徑。(調度和執行的單位)spa
(注:一個進程中必須存在主線程,主線程運行的代碼存在main方法中)線程
(二)Thread類code
①Thread(Runnable target, String name)構造方法:分配新的 Thread 對象。對象
②currentThread方法:返回對當前正在執行的線程對象的引用。blog
③getName方法:返回該線程的名稱。繼承
④getState方法:返回該線程的狀態。接口
返回值: NEW——新生狀態; RUNNABLE——運行狀態; BLOCKED——阻塞狀態; WAITING——等待喚醒;
TIMED_WAITING——等待指定時間長度; TERMINATED——死亡狀態。
⑤getPriority方法:返回線程的優先級。
⑥setPriority(int newPriority):更改線程的優先級(優先級設定在1~10之間,默認值爲5)。
⑦isAlive方法:測試線程是否處於活動狀態。
返回值:線程處於活動狀態——true;不然——false。
⑧join方法:等待該線程終止(該線程強制執行,其它線程處於阻塞狀態)。
⑨sleep(long millis)方法:在指定的毫秒數內讓當前正在執行的線程休眠,線程處於阻塞狀態。
⑩yield方法:暫停當前線程對象執行一次,該線程返回就緒狀態。
(三)多線程的實現1——繼承Thread類
①繼承Thread類;
②重寫run方法,將要執行的代碼寫入run方法中;
③建立線程對象,調用start方法啓動線程。
public class Test { public static void main(String[] args) { MyThread mt = new MyThread(); mt.start(); for (int i = 0; i < 100; i++) { System.out.println("Main" + i); } } }
public class MyThread extends Thread{ @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("MyThread"+i); } } }
(四)多線程的實現2——實現Runnable接口
①建立Thread類,實現Runnable接口;
②實現run方法;
③建立一個實現Runnable接口的類的對象,用該對象來構造Thread對象;
④調用start方法啓動線程。
public class Test { public static void main(String[] args) { MyThread02 mt = new MyThread02(); Thread th = new Thread(mt); th.start(); for (int i = 0; i < 100; i++) { System.out.println("Main" + i); } } }
public class MyThread02 implements Runnable{ @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("MyThread"+i); } } }
(五)多線程的實現3——實現Callable接口
①建立Thread類,實現Callable接口;
②建立一個實現Callable接口的類的對象
③建立一個FutureTask類的對象,用該對象來構造Thread對象;
④調用start方法啓動線程。
public class Test { public static void main(String[] args) {
Callable<T> oneCallable = new SomeCallable<T>();
FutureTask<T> oneTask = new FutureTask<T>(oneCallable);
Thread oneThread = new Thread(oneTask);
oneThread.start();
}
}
public interface Callable<T> { T call() throws Exception; }
public class SomeCallable<T> extends OtherClass implements Callable<T> { @Override public T call() throws Exception { return null; } }
(六)線程的狀態
①新生狀態:無資源、無資格;
②就緒狀態:有資格、無資源;
③運行狀態:有資源、有資格;
④阻塞狀態:無資格、讓資源;
⑤死亡狀態:線程結束。
(七)線程的運行過程
過程①:調用start方法,進入就緒狀態;
過程②:CPU調度該線程,進入運行狀態;
過程③:run方法執行完畢、線程被強制結束或拋出未捕獲異常;
過程④:發生致使線程阻塞的事件;
過程⑤:阻塞的事件結束,從新進入就緒狀態;
過程⑥:CPU片斷時間到,線程未執行完畢,返回就緒狀態。
———————————————————————————————————————————————————————————————————
The end @ 萬有引力+
-
-
-
-
-