一.線程的狀態
java的線程是通過java.lang.Thread類來實現的。
java的線程通常分爲五個狀態:創建,就緒,運行,阻塞,死亡。
-
創建:生成了線程對象,但是沒有start,此時線程處於創建狀態。想象一下緩存視頻,首先選擇目標視頻。
-
就緒:調用了線程的start方法,此時線程調度程序還沒有把該線程設置爲當前線程,此時處於就緒狀態。在線程運行之後,從等待或者睡眠中回來之後,也會處於就緒狀態。加入下載列表。
-
運行:線程調度程序將處於就緒狀態的線程設置爲當前線程,此時線程就進入了運行狀態,開始運行run函數當中的代碼。開始下載。
-
阻塞:線程正在運行的時候被暫停,通常是爲了等待某個時間的發生(比如說某項資源就緒)之後再繼續運行。sleep,suspend,wait等方法都可以導致線程阻塞。暫停一下,先下另一集。
-
死亡:如果一個線程的run方法執行結束或者調用stop方法後,該線程就會死亡。對於已經死亡的線程,無法再使用start方法令其進入就緒。下載完成。
二.創建並啓動線程
1、寫一個類繼承自Thread類,重寫run方法。用start方法啓動線程
啓動一個線程是調用start()方法,使線程所代表的虛擬處理機處於可運行狀態,這意味着它可以由JVM調度並執行,這並不意味着線程就會立即運行。run()方法是線程啓動後要進行回調(callback)的方法。
public static void main(String[] args) {
Thread thread1=new thread1();
thread1.start();
}
public static class thread1 extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("運行了thread1");
}
}
2、寫一個類實現Runnable接口,實現run方法。用new Thread(Runnable target).start()方法來啓動
public static void main(String[] args) {
Thread thread2=new Thread(new thread2());
thread2.start();
}
public static class thread2 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("運行了thread2");
}
}
(實現Callable接口等再議…)