Java多线程(2)--Thread类继承和Runnable接口创建线程
Java語言的JVM允許程序運行多個線程,它通過java.lang.Thread類來體現。
Thread類的特性
每個線程都是通過某個特定Thread對象的run()方法來完成操作的,經常把run()方法的主體稱為線程體,通過該Thread對象的start()方法來啟動這個線程,而非直接調用run()。
JDK1.5之前創建新執行線程有兩種方法:
①繼承Thread類的方式 (點擊查看Thread類相關常用的方法)
②實現Runnable接口的方式
方式一:繼承Thread類
①定義子類繼承Thread類。
②子類中重寫Thread類中的run方法。
③創建Thread子類對象,即創建了線程對象。
④調用線程對象start方法:啟動線程,調用run方法。
繼承Thread的子類MyThread
public class MyThread extends Thread{@Overridepublic void run() { //該方法體即為該線程要執行的程序for (int i = 0;i < 50;i++){if (i % 2 == 0) System.out.println(i);}} }創建線程對象并執行
public class TestThread {public static void main(String[] args) {//創建線程MyThread thread = new MyThread();//啟動該線程,并執行run()方法thread.start();//以下是不同于thread的線程for (int i = 0; i < 50; i++) {if (i % 2 == 0) {System.out.println(i + "#####");}}} }結果(僅截取部分)
該結果隨著計算機的不同會有不同的情況,不定。但要表達的意思就是多線程執行的情況下不同線程是并行的。
注意點:
①如果自己手動調用run()方法,那么就只是普通方法,沒有啟動多線程模式。
②run()方法由JVM調用,什么時候調用,執行的過程控制都有操作系統的CPU調度決定。
③啟動多線程,必須通過調用start()方法。
④一個線程對象只能調用一次start()方法啟動,如果重復調用了,則將拋出異常“IllegalThreadStateException”。
方式二:實現Runnable接口
①定義子類,實現Runnable接口。
②子類中重寫Runnable接口中的run方法。
③通過Thread類含參構造器創建線程對象。
④將Runnable接口的子類對象作為實際參數傳遞給Thread類的構造器中。
⑤調用Thread類的start方法:開啟線程,調用Runnable子類接口的run方法。
實現Runnable接口的類
public class MThread implements Runnable{@Overridepublic void run() {for (int i = 0; i < 100; i++) {if (i % 2 == 0){System.out.println(i);}}} }創建對象并執行
public class TestThread {public static void main(String[] args) {MThread thread = new MThread();Thread curThread = new Thread(thread);curThread.start();} }繼承方式和實現方式的聯系與區別
開發中:優先選擇:實現Runnable 接口的方式
原因:①實現的方式沒有類的單繼承性的局限性。②實現的方式更適合來處理多個線程有共享數據的情況。
聯系: public class Thread implements Runnable
相同點:兩種方式都需要重寫run(),將線程要執行的邏輯寫在在run()中。
總結
以上是生活随笔為你收集整理的Java多线程(2)--Thread类继承和Runnable接口创建线程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux手机版下载(linux手机版)
- 下一篇: Java多线程(3)--线程的生命周期