相關概念java
進程:是一次程序的運行。安全
線程:在進程中獨立運行的子任務。多線程
使用多線程的優勢:提高系統的運行效率。異步
如何使用多線程ide
2.1繼承Thread類測試
Thread類的結構:public class Thread implements Runnablethis
繼承Thread類的方式,最大的侷限就是不支持多繼承。線程
用法:定義線程類,此類繼承自Thread類,而且重寫run方法。而後定義了線程對象後,調用start方法啓動線程。code
public class MyThread extends Thread { @Override public void run() { System.out.println("MyThread"); } public static void main(String [] args){ MyThread myThread = new MyThread(); myThread.start(); System.out.println("main"); } 運行結果: main MyThread 或 MyThread main
啓動了兩個線程:main主線程和MyThread線程,兩個線程誰先運行是隨機的,因此纔出現了以上的兩種運行結果。對象
start方法通知線程規劃器,此線程已經準備就緒,等待調用線程對象的run方法,具備異步執行的效果。如果調用了myThread。run(),則是同步執行,必須先執行完run方法,纔會向下執行。
同時注意,一個線程屢次調用start方法,會拋出IlllegalThreadStateExeception異常。而多個線程對象執行start方法的順序頁不表明線程啓動的順序。
2.2實現Runnable接口
public class MyRunnable implements Runnable { @Override public void run() { System.out.println("MyRunnable"); } public static void main(String [] args){ MyRunnable myRunnable= new MyRunnable(); Thread thread = new Thread(myRunnable); thread.start(); System.out.println("main"); }
3.多線程相關方法
currentThread():返回代碼段正在被哪一個線程調用的消息:main Thread-0,Thread-1。
isAlive():判斷當前線程是否處於活動狀態。
sleep():在指定的毫秒數內讓當前正在執行的線程休眠。
getId():獲取線程的惟一標識。
4.中止線程
中止一個線程意味着在線程處理完任務以前停掉正在作的操做。
在Java中有三種方法能夠終止正在運行的線程:
1)使用退出標誌,使線程正常退出
2)stop方法,但該方法是不安全的。
3)使用interrupt方法中斷線程。
4.1中止不了的線程
調用interrupt方法來中止線程,但interrupt方法的使用效果並非像for+break那樣,立刻就終止循環,調用interrupt方法僅僅在當前線程中打了一箇中止的標記,並非真的中止線程。還須要加入一個判斷才能夠完成線程的終止。
如何判斷線程的狀態是否是中止的?
Thread提供了兩個方法:1)this,interrupted():測試 當前線程 是否已經中斷;2)this,isInterrupted():測試線程Thread對象是否已經中斷。