Day16:線程
基本概念:程序,進程,線程
1、程序(program):是爲完成特定任務、用某種語言編寫的一組指令的集合。即指一段靜態的代碼,靜態對象。
2、進程(process):是程序的一次執行過程,或是正在運行的一個程序。動態過程:有它自身的產生、存在和消亡的過程。
3、線程(thread):進程可進一步細化成線程,是一個程序內部的一條執行路徑。
Thread類:
1.每個線程都是通過某個特定的Thread對象的run()方法來完成操作的,經常把run()方法的主題成爲線程體。
2.通過該Thread對象的start()方法來調用這個線程。
創建一個線程:
1.創建一個繼承於Thread的子類。
2.重寫Thread類的run()方法,方法內實現此子線程要完成的功能。
3.創建一個子類的對象。
4.調用線程的start():啓動此線程,調用相應的run()方法。
注意:
①一個線程只能夠執行一次start()。
②不能通過實現類對象的run()方法來啓動線程。
Thread的常用方法:
1.start():啓動線程並執行相應的run()方法。
2.run():子線程要執行的代碼放入run()方法中。
3.currentThread():靜態的,調取當前的線程。
4.getName():獲取此線程的名字。
5.setName():設置此線程的名字。
6.yield():調用此方法的線程釋放當前CPU執行權。
7.join():在A線程中調用B線程的join()方法,表示:當執行到此方法時,A線程停止執行,直到B線程執行完畢,A線程再接着join()之後的代碼執行。
8.isAlive():判斷該線程是否還存活。
9.sleep(long l):顯式的讓當前線程睡眠 l 毫秒。
10.線程通信:①wait()②notif()③notifyAll()
11.線程的優先級:
①MAX_PRIORITY(10); getPriority():返回線程優先級。
②MIN_PRIORITY(1); setPriority(int newPriority):改變線程的優先級。
③NORM_PRIORITY(5); 線程創建時繼承父線程的優先級。
線程的調度:
1.時間片。
2.搶佔式:高優先級的線程搶佔CPU。