1. 程式人生 > >Java執行緒池一:執行緒基礎

Java執行緒池一:執行緒基礎

最近精讀Netty原始碼,讀到NioEventLoop部分的時候,發現對Java執行緒&執行緒池有些概念還有困惑, 所以深入總結一下 ### 執行緒建立 Java執行緒建立主要有三種方式:繼承Thread類、實現Runable介面、實現Callable介面 只有通過呼叫``Thread.start()`` 方法才會真正建立一個執行緒, 呼叫``Thread.run()`` 並不會 當呼叫執行緒關心任務執行結果時,我們應選擇實現Callable介面的方式建立執行緒 - 繼承方式實現建立執行緒 ```java @Test public void testCreate_1() { Thread t = new Thread() { @Override public void run() { System.out.println(Thread.currentThread().getName()); throw new RuntimeException(); } }; t.start(); t.run(); } ``` - 實現Runnable介面的方式建立執行緒,這種方式呼叫執行緒無法感知任務執行緒執行結果(是否執行、成功或者異常) ```java @Test public void testCreate_2() { Thread t = new Thread(() -> System.out.println(Thread.currentThread().getName())); t.start(); } ``` - 實現Callable介面,呼叫執行緒通過FutureTask物件獲取執行結果(返回值或者異常) ```java @Test public void testCreate_3() throws ExecutionException, InterruptedException { Fu