Java執行緒池一:執行緒基礎
阿新 • • 發佈:2020-11-29
最近精讀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