1.任務只需實現Runner接口並編寫run()方法,就可以執行任務.每個任務需要着到線程(Thread)上.
注意:線程執行基本是無序的,若要控制順序,需要使用同步控制
2.但是Exector可以爲我們管理Thread對象,Exector在客戶端和任務執行之間提供了一個間接層.
Executors.newCachedThreadPool(),Executors.newFixedThreadPool(5)
3.可以從任務中返回值P658
4.線程休眠:TimeUnit.MILLISECONDS.sleep(1000)
5.線程優先級P660.
6.線程讓步yield,不可依賴,常被誤用.
7.後臺(daemon)線程P662
(1) Thread daemon = new Thread(new SimpleDaemons());
daemon.setDaemon(true); // Must call before start()
daemon.start();
(2)可以通過isDaemon()判斷是否爲後臺線程
*通過後臺純種創建的線程也是後臺線程P663
(3) 當最後一個非後臺線程終止時,所有後臺線程會"突然"全部終止,所有未執行完的部分都不會執行,包括finally模塊.
8.異常捕獲
(1)無法直接捕獲從線程中拋出的異常
(2)若要捕獲線程中的異常,必須在創建線程時設置異常處理器(ExceptionHandler)P673-674