簡介
執行緒是基本的調度單位,它被包含在行程之中,是行程中的實際運作單位,它本身是不會獨立存在,一個行程至少有一個執行緒,行程中的多個執行緒共享行程的資源,
Java中創建執行緒的方式有多種如繼承Thread類、實作Runnable介面、實作Callable介面以及使用執行緒池的方式,執行緒池將在后面文章中單獨介紹,這里先介紹另外三種方式,
繼承Thread類
優點:在run方法里可以用this獲取到當前執行緒,
缺點:由于Java不支持多繼承,所以如果繼承了Thread類后就不能再繼承其他類,
public class MyThread extends Thread {
/**
* 執行緒要執行的任務
*/
@Override
public void run() {
System.out.println("do something...");
}
public static void main(String[] args) {
//創建執行緒
MyThread myThread = new MyThread();
//啟動執行緒
myThread.start();
}
}
實作Runnable介面
優點:實作Runnable介面后不影響繼承其他類,以及有利于多個執行緒資源共享,
缺點:獲取當前執行緒需要呼叫Thread.currentThread(),
public class MyThread implements Runnable {
/**
* 執行緒要執行的任務
*/
@Override
public void run() {
System.out.println("do something...");
}
public static void main(String[] args) {
//創建兩個執行緒,并指定相同的任務
Thread thread1 = new Thread(new MyThread());
Thread thread2 = new Thread(new MyThread());
//啟動執行緒
thread1.start();
thread2.start();
}
}
實作Callable介面
優缺點類似于實作Runnable介面,但是實作Callable介面可以有回傳值,
public class MyThread implements Callable<String> {
/**
* 執行緒要執行的任務,并且具有回傳值
*/
@Override
public String call() throws Exception {
System.out.println("do something...");
Thread.sleep(3000);
return "我是回傳值";
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
//創建異步任務
FutureTask<String> futureTask = new FutureTask(new MyThread());
//啟動執行緒
new Thread(futureTask).start();
//阻塞等待執行緒執行完成并回傳結果
String result = futureTask.get();
System.out.println(result);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/266573.html
標籤:Java
下一篇:資料系結
