線程認識與創建方式 1,並行與併發 並行:同一時刻同時執行方法 併發:一個時間段執行的方法 2,線程認識 啟動一個進程時,至少會同時啟動一個線程,是一個進程分不同模塊同時執行不同的工作, 一般情況下啟動Java程式,main方法是一個主線程啟動的同時會啟動垃圾回收的線程 3,開啟線程的方法 四種:繼 ...
線程認識與創建方式
1,並行與併發
並行:同一時刻同時執行方法
併發:一個時間段執行的方法
2,線程認識
啟動一個進程時,至少會同時啟動一個線程,是一個進程分不同模塊同時執行不同的工作,
一般情況下啟動Java程式,main方法是一個主線程啟動的同時會啟動垃圾回收的線程
3,開啟線程的方法
四種:繼承thread類,實現Runnable介面,實現callable介面,線程池
thread類:重寫run方法,創建類對象,start()開啟線程。
Runnable介面:重寫run()方法,創建thread對象傳入實現了runnable介面的對象,也可同時傳入線程名稱(可選,有預設),start()開啟。
callable介面(依賴futuretask類):FutureTask實現了RunnableFuture介面,RunnableFuture繼承Future(動態監控線程,get,isdone,cancel。。)和Runnable介面
重寫call()方法,創建FutureTask對象task傳入實現callable介面的對象,創建thread對象傳入task,也可同時傳入線程名,start()開啟。
開啟後可調用get獲取返回值(此方法阻塞主線程)
線程池:一個裝線程的容器
executors工具類,幫助創建線程池。
executors.new.....線程類型(),返回線程池對象,
線程池對象.execute方法傳入實現了runnable的對象
註意:runnable和callable區別:1.runnable重寫run方法,callable重寫call方法。2.runnable沒有返回值,callable有返回值
3.runnable不能拋出異常,callable可以。4.runnable不能動態監控,callable有工具類futuretask監控。如get獲取返回值,cancel取消執行