線程就是程序中單獨順序的流控制。線程本身不能運行,它只能用于程序中。線程是程序內的順序控制流,只能使用分配給程序的資源和環境。
多線程則指的是在單個程序中可以同時運行多個不同的線程執行不同的任務。
同其他大多數編程語言不同,java內置支持多線程編程(multithreaded 多任務處理被所有的現代操作系統所支持。然而,多任務處理有兩種截然不同的類型:基于進程的和基于線程的。基于進程的多任務處理是更熟悉的形式。進程(process)本質上是一個執行的程序。因此基于進程的多任務處理的特點是允許你的計算機同時運行兩個或更多的程序。舉例來說,基于進程的多任務處理使你在運用文本編輯器的時候可以同時運行Java編譯器。在基于進程的多任務處理中,程序是調度程序所分派的最小代碼單位。而在基于線程(thread-based)的多任務處理環境中,線程是最小的執行單位。這意味著一個程序可以同時執行兩個或者多個任務的功能。例如,一個文本編輯器可以在打印的同時格式化文本。 多個進程的內部數據和狀態都是完全獨立的,而多線程是共享一塊內存空間和一組系統資源,有可能互相影響。線程本身的數據通常只有寄存器數據,以及一個程序執行時使用的堆棧,所以線程的切換比進程切換的負擔要小。 Java多線程的優點就在于取消了主循環/輪詢機制。一個線程可以暫停而不影響程序的其他部分。例如,當一個線程從網絡讀取數據或等待用戶輸入時產生的空閑時間可以被利用到其他地方。多線程允許活的循環在每一幀間隙中沉睡一秒而不暫停整個系統。Java運行系統在很多方面依賴于線程,所有的類庫設計都考慮到多線程。實際上,Java使用線程來使整個環境異步。這有利于通過防止CPU循環的浪費來減少無效部分。
新聞熱點
疑難解答