線程(Thread)是程序執行時的最小單元,它是操作系統能夠進行運算調度的最小單位。一個線程包含一個程序計數器、堆棧和寄存器的集合,這使得線程可以獨立運行、被中斷和恢復運行。線程通過共享內存的方式來共享數據,同一個進程中的多個線程可以共享進程的資源,例如堆、棧、文件句柄等,這使得線程間通訊更為高效。
線程在Java中有兩種類型:
用戶線程:由程序創建的線程,通常稱為前臺線程,它們運行在使用者的程序中,當程序的主線程結束時,用戶線程不一定結束,仍然可以繼續運行,直到完成任務或被手動停止。
守護線程:守護線程是一種特殊的線程,它在程序運行過程中在后臺運行,主要用來為其他線程和應用程序提供服務。當只剩下守護線程時,Java虛擬機自動退出。守護線程通常被用作系統資源的管理者,例如Java垃圾回收機制就是由一個守護線程來完成。
在線程中,還有一種與操作系統線程直接相關的概念:native線程(本地線程),指使用特定于本機的線程實現的線程。Java運行時與本地線程交互,將Java線程映射到本地線程中。單個Java線程可能對應于多個本地線程。這種Java線程機制的優勢在于可以利用操作系統的多線程資源,實現高并發和高效的程序運行。