Java多執行緒實現方式
好程式設計師 Java 培訓分享 Java 多執行緒實現方式, Java 多執行緒實現方式主要有三種:繼承Thread 類、實現 Runnable 介面、使用 ExecutorService 、 Callable 、 Future 實現有返回結果的多執行緒。其中前兩種方式執行緒執行完後都沒有返回值,只有最後一種是帶返回值的。如下:
1 、繼承 Thread 類實現多執行緒
繼承Thread 類的方法儘管被我列為一種多執行緒實現方式,但 Thread 本質上也是實現了 Runnable 介面的一個例項,它代表一個執行緒的例項,並且,啟動執行緒的唯一方法就是透過 Thread 類的 start() 例項方法。 start() 方法是一個 native 方法,它將啟動一個新執行緒,並執行 run() 方法。這種方式實現多執行緒很簡單,透過自己的類直接 extend Thread ,並複寫 run() 方法,就可以啟動新執行緒並執行自己定義的 run() 方法。例如:
[ Java ] view plain copypublic class MyThread extends Thread {
public void run() {
System.out.println("MyThread.run()");
}
}
在合適的地方啟動執行緒如下:
[ Java ] view plain copyMyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();
myThread2.start();
2 、實現 Runnable 介面方式實現多執行緒
如果自己的類已經extends 另一個類,就無法直接 extends Thread ,此時,必須實現一個 Runnable 介面,如下:
[ Java ] view plain copypublic class MyThread extends OtherClass implements Runnable {
public void run() {
System.out.println("MyThread.run()");
}
}
為了啟動MyThread ,需要首先例項化一個 Thread ,並傳入自己的 MyThread 例項:
[ Java ] view plain copyMyThread myThread = new MyThread();
Thread thread = new Thread(myThread);
thread.start();
事實上,當傳入一個Runnable target 引數給 Thread 後, Thread 的 run() 方法就會呼叫 target.run() ,參考 JDK 原始碼:
[ Java ] view plain copypublic void run() {
if (target != null) {
target.run();
}
}
3 、使用 ExecutorService 、 Callable 、 Future 實現有返回結果的多執行緒
ExecutorService 、 Callable 、 Future 這個物件實際上都是屬於 Executor 框架中的功能類。 這裡面對該框架做了很詳細的解釋。返回結果的執行緒是在 JDK1.5 中引入的新特徵,確實很實用,有了這種特徵我就不需要再為了得到返回值而大費周折了,而且即便實現了也可能漏洞百出。
可返回值的任務必須實現Callable 介面,類似的,無返回值的任務必須 Runnable 介面。執行 Callable 任務後,可以獲取一個 Future 的物件,在該物件上呼叫 get 就可以獲取到 Callable 任務返回的 Object 了,再結合執行緒池介面 ExecutorService 就可以實現傳說中有返回結果的多執行緒了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2704650/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java實現多執行緒的三種方式Java執行緒
- java執行緒實現方式Java執行緒
- Java高併發與多執行緒(二)-----執行緒的實現方式Java執行緒
- Java多執行緒之—Synchronized方式和CAS方式實現執行緒安全效能對比Java執行緒synchronized
- Java建立多執行緒的幾種方式實現Java執行緒
- Java之實現多執行緒的方式二:實現Runnable介面Java執行緒
- Java之實現多執行緒的方式三:實現Callable介面(結合執行緒池使用)Java執行緒
- Java多執行緒的實現Java執行緒
- Java中實現執行緒的方式Java執行緒
- 面試-實現多執行緒的方式面試執行緒
- Java實現多執行緒詳解一 ( 繼承Thread方式 )Java執行緒繼承thread
- Java之實現多執行緒的方式一 :繼承Thread類Java執行緒繼承thread
- Java多執行緒【三種實現方法】Java執行緒
- 【java】【多執行緒】建立執行緒的兩種常用方式(2)Java執行緒
- 關於多執行緒的兩種實現方式執行緒
- 【多執行緒高併發程式設計】二 實現多執行緒的幾種方式執行緒程式設計
- 最直白的方式直面Java多執行緒Java執行緒
- Java建立多執行緒的四種方式Java執行緒
- 使用Java實現多執行緒程式設計Java執行緒程式設計
- Java響應式關聯式資料庫多執行緒實現方式Java資料庫執行緒
- Java多執行緒之守護執行緒實戰Java執行緒
- 如何實現多執行緒執行緒
- Java多執行緒-執行緒中止Java執行緒
- 【Java多執行緒】輕鬆搞定Java多執行緒(二)Java執行緒
- 多執行緒實現多工二執行緒
- 多執行緒實現多工一執行緒
- Java多執行緒檔案分片下載實現Java執行緒
- java——多執行緒Java執行緒
- java多執行緒Java執行緒
- Java - 多執行緒Java執行緒
- java 多執行緒Java執行緒
- Java多執行緒之執行緒中止Java執行緒
- Java多執行緒-執行緒狀態Java執行緒
- Java多執行緒-執行緒通訊Java執行緒
- java 多執行緒守護執行緒Java執行緒
- Java多執行緒(2)執行緒鎖Java執行緒
- java多執行緒9:執行緒池Java執行緒
- 【java多執行緒】(二)執行緒停止Java執行緒