線程認識與建立方式併發
1,並行與併發工具
並行:同一時刻同時執行方法線程
併發:一個時間段執行的方法對象
2,線程認識blog
啓動一個進程時,至少會同時啓動一個線程,是一個進程分不一樣模塊同時執行不一樣的工做,繼承
通常狀況下啓動Java程序,main方法是一個主線程啓動的同時會啓動垃圾回收的線程接口
3,開啓線程的方法進程
四種:繼承thread類,實現Runnable接口,實現callable接口,線程池get
thread類:重寫run方法,建立類對象,start()開啓線程。it
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取消執行