1. 創建線程的方式有哪些?
- 繼承Thread類
- 實現runnable接口
- 實現Callable接口
- 線程池創建線程(項目中使用方式)
2. runnable 和 callable 有什么區別?
- Runnable接口run方法沒有返回值
- Callable接口call方法有返回值,需要FutureTask獲取結果
- Callable接口的call()方法允許拋出異常;而Runnable接口的run()方法的異常只能在內部消化,不能繼續上拋
3. run()和 start()有什么區別?
- start():用來啟動線程,通過該線程調用run方法執行run方法中所定義的邏輯代碼。start方法只能被調用一次。
- run():封裝了要被線程執行的代碼,可以被調用多次。