Java中 實現多線程成的三種方式(繼承,實現,匿名內部類)
/** 第一種方式:繼承Thread類
* 1. 定義一個類,然後讓該類繼承Thread類
* 2. 重寫run方法
* 3. 創建定義的這個類的對象
* 4. 啟動線程
*/
//繼承Thread類
public class MyThread extends Thread{
public MyThread() {}
public MyThread(String name) {
super(name);
}
//run方法中封裝的應該是要被線程執行的代碼 ,run方法中代碼的原則,一般存方的都是比較耗時的代碼
public void run (){
for (int i = 0; i < 200; i++) {
System.out.println(Thread.currentThread().getName() + "---" + i);
}
}
}
//測試方法
private static void Test() {
// 創建對象
MyThread mt1 = new MyThread();
MyThread mt2 = new MyThread();
//啟動線程
// public void start()使該線程開始執行;Java 虛擬機調用該線程的 run 方法。
mt1.start();
//mt1.start();// 線程的啟動只能是一次
mt2.start();
}
------------------------------------------------------------------------------------------------------------
/** 第二種方式:實現Runnable接口
* (1): 創建一個類,讓該類實現Runnable接口
* (2): 重寫run方法
* (3): 創建該類的對象
* (4): 創建Thread類的對象,然後把3中的對象作為參數傳遞給Thread
* (5): 啟動線程
*/
//實現Runnable接口
public class MyThread2 implements Runnable {
public MyThread2() {
super();
}
public void run() {
for(int x = 0 ; x < 200 ; x++){
System.out.println(Thread.currentThread().getName() + "---" + x);
}
}
}
//測試方法
private static void Test2() {
// 創建MyThread的對象
MyThread2 mt = new MyThread2();
// 創建Thread類的對象,然後把3中的對象作為參數傳遞給Thread
// public Thread(Runnable target)
Thread t1 = new Thread(mt,"張飛");
Thread t2 = new Thread(mt,"關羽");
Thread t3 = new Thread(mt,"劉備");
// 啟動線程
t1.start() ;
t2.start() ;
t3.start() ;
}
------------------------------------------------------------------------------------------------------------
/** 第三種方式:使用匿名內部類的方式實現
* new 類名/接口名() {
* 方法重寫 ;
* } ;
*/
//測試方法
//匿名內部類
private static void Test3() {
new Thread() {
public void run() {
System.out.println("線程執行了。。。。。。。");
}
}.start();
}