1. 程式人生 > 程式設計 >Java併發程式設計(五)建立執行緒方式概覽

Java併發程式設計(五)建立執行緒方式概覽

Java極客  |  作者  /  鏗然一葉
這是Java極客的第 33 篇原創文章

以下簡述建立執行緒的幾種方式,不深入展開,瞭解則可。

一、實現Runnable介面


1.業務類實現Runnable介面
2.Thread類注入業務類並啟動
程式碼如下:

public class RunnableDemo {
    public static void main(String[] args) {
        //Thread構造器注入實現類並啟動
        new Thread(new RunnableWorker()).start();
    }
}

//實現Runnable介面
class RunnableWorker implements Runnable { public void run() { for (int i = 0; i < 10; i++) { System.out.println(i); } } } 複製程式碼

二、繼承Thread類


業務類繼承Thread,可直接以執行緒方式執行。程式碼如下:

public class ThreadDemo extends Thread {

    public static void main(String[] args) {
        new
ThreadDemo().start(); } @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println(i); } } } 複製程式碼

三、實現Callable介面


業務類可以實現Callable介面或者Runnable介面,二者的區別是Callable執行完後有返回值,Runnable沒有返回值。
程式碼如下:

public class FutureDemo {
    public static
void main(String[] args)
{ FutureTask<Integer> task = new FutureTask(new CallableWorker()); new Thread(task).start(); try { System.out.println(task.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } } class CallableWorker implements Callable<Integer> { public Integer call() throws Exception { return 10; } } 複製程式碼

四、Executors構建


業務類可以實現Callable介面或者Runnable介面,二者的區別是Callable執行完後有返回值,Runnable沒有返回值。
程式碼如下:

public class ExecutorsDemo {
    public static void main(String[] args) throws ExecutionException,InterruptedException {
        //建立執行緒池
        ExecutorService executorService = Executors.newFixedThreadPool(1);
        //提交匿名Callable
        Future<Integer> future = executorService.submit(new Callable<Integer>() {
            public Integer call() throws Exception {
                return 10;
            }
        });

        //獲取執行緒執行返回值
        System.out.println(future.get());
    }
}
複製程式碼

end.


相關閱讀:
Java併發程式設計(一)知識地圖
Java併發程式設計(二)原子性
Java併發程式設計(三)可見性
Java併發程式設計(四)有序性
Java併發程式設計入門(六)synchronized用法
Java併發程式設計入門(七)輕鬆理解wait和notify以及使用場景
Java併發程式設計入門(八)執行緒生命週期
Java併發程式設計入門(九)死鎖和死鎖定位
Java併發程式設計入門(十)鎖優化
Java併發程式設計入門(十一)限流場景和Spring限流器實現
Java併發程式設計入門(十二)生產者和消費者模式-程式碼模板
Java併發程式設計入門(十三)讀寫鎖和快取模板
Java併發程式設計入門(十四)CountDownLatch應用場景
Java併發程式設計入門(十五)CyclicBarrier應用場景
Java併發程式設計入門(十六)秒懂執行緒池差別
Java併發程式設計入門(十七)一圖掌握執行緒常用類和介面
Java併發程式設計入門(十八)再論執行緒安全


Java極客站點: javageektour.com/