新增實現方式之實現Callable接口
特點
1、可以有返回值。
2、方法可以拋異常。
3、支持泛型的返回值。
4、需借助FutureTask類,比如獲取返回值。
步驟
1、創建一個實現Callable接口的實現類。
2、重寫call方法, 將此線程需執行的操作聲明在call()中。
3、創建Callable接口實現類的對象。
4、將Callable 接口實現類的對象傳遞到FutureTask構造器中,創建Future Task的對象。
5、將FutureTask的對象作為參數傳遞到Thread類的構造器中,創建Thread對象,并調用start()。
6、獲取Callable 中call()的返回值。
方法
get():獲取返回值
新增實現方式之創建線程池
步驟
1、提供指定線程數量的線程池。例:
ExecutorService service = Executors. newFixedThreadPool(線程數);
2、執行指定的線程操作,需提供實現Runnable接口或Callable接實現類的對象。例:
t.execute(Runnable runnable):
3、關閉連接池
好處
1、提高響應速度(減少創建新線程的時間)。
2、降低資源消耗(重復利用線程池中的線程,不須重復創建)。
3、便于線程管理。
① core Poolsize:核心池的大小
②maximumPoolsize:最大線程數
③keepAliveTime:線程沒有任務時最多保持多長時間后終止。
線程池相關API:ExecutorService和Executors
ExceutorService:真正的線程池接口
①void execute(Rumable runnable):執行任務/命令,無運回值,用來執行Runnuble接口的實現類。
②<T>Future<T>? submit(Callable<T> task):有返回值,用來執行Callable接口的實現類。
③void shutdown():關閉連接池
Exeecutors:工具類,用來創建并返回不同類型的線程池
① new CachedThreadPool():創建任意數量線程的線程池。
② new FixedThread Pool():創建一個固定線程的線程池。
③ new SingleThread Excutor():創建只有一個線程的線程池。
④new ScheduledThreadPool(n):創建一個線程池,可安排在給定延遲后行命令或定期地執行。