Java中多线程概念详解
? ? 在操作系統中,兩個比較容易混淆的概念是線程(thread)與進程(process)。操作系統中的進程是一個計算機程序的運行實例。計算機程序中包含了需要執行的指令,而進程則表示正在執行的指令,對同一個計算機程序可以創建多個進程。這些進程的運行狀態各不相同。進程一般作為資源的組成單位。進程有自己獨立的地址空間,包含程序內容和數據。不同進程的地址空間的相互隔離的。進程擁有各種資源和狀態信息,包含打開的文件、子進程和信號處理器等。線程表示的是進程的執行流程,是CPU調度執行的基本單位。線程有自己的程序計數器、寄存器、堆棧和幀等。同一進程中的線程共用相同的地址空間,同時共享進程所擁有的內存和其他資源。
?????????引入線程的主要動機在于提高程序的運行性能。在一個程序中主要存在使用CPU和IO操作的兩類計算。IO操作相對CPU運算來說比較耗時,而且很多都是阻塞式是。當一個線程所執行的IO操作被阻塞時,同一進程中的其他線程可以使用CPU來進行計算。在資源允許時,多個線程可以同時進行IO操作。這種方式提高了操作系統中資源的使用效率,進而提高了進程的運行性能。線程的概念在主流操作系統和編程語言中都得到了支持。不同操作系統和編程語言中的線程的使用方式有很大的區別。這對于開發跨平臺的多線程程序來說是個不小的挑戰。Java平臺通過Java虛擬機解決了跨平臺的問題,使由相同API開發的多線程程序在不同的平臺上都能正確運行。
????? Java標準庫提供了與進程和線程相關的API。表示進程的是java.lang.Process類和創建進程的是java.lang.ProcessBuilder類。表示線程的是java.lang.Thread類。在虛擬機啟動之后,通常只有一個普通線程來運行程序代碼。這個線程用來啟動主Java類的main方法的運行。程序在運行時可以根據需要創建新的線程并啟動線程的運行。除了普通線程之外,還有一類線程是守護線程(daemon thread)。守護線程一般在后臺運行,提供程序運行時所需的服務。當虛擬機中運行的所有線程都是守護線程時,虛擬機終止運行。
??????? Java線程API的具體實現由底層的Java虛擬機來負責提供,為了更好地理解線程API的使用及多線程開發,需要對虛擬機內部的相關機制有一定的了解。
轉載于:https://www.cnblogs.com/dyllove98/archive/2013/02/04/2891601.html
總結
以上是生活随笔為你收集整理的Java中多线程概念详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDOJ 3642 Get The Tr
- 下一篇: 黑马Java学习笔记之-----单例模式