Java進程
進程(Process)是計算機中的程序關于某數據集合上的一次運行活動,是操作系統進行資源分配與調度的基本單位。
可以把進程簡單的理解為正在操作系統中運行的一個程序。
線程(thread)是進程的一個執行單元。
一個線程就是進程中一個單一順序的控制流, 進程的一個執行分支。
進程是線程的容器,一個進程至少有一個線程.一個進程中也可以有多個線程。
在操作系統中是以進程為單位分配資源,如虛擬存儲空間,文件描述符等. 每個線程都有各自的線程棧,自己的寄存器環境,自己的線程本地存儲。
JVM啟動時會創建一個主線程,該主線程負責執行main方法 . 主線程就是運行main方法的線程。
Java中的線程不孤立的,線程之間存在一些聯系. 如果在A線程中創建了B線程, 稱B線程為A線程的子線程, 相應的A線程就是B線程的父線程。
并發可以提高以事物的處理效率, 即一段時間內可以處理或者完成更多的事情。
并行是一種更為嚴格,理想的并發。
從硬件角度來說, 如果單核CPU,一個處理器一次只能執行一個線程的情況下,處理器可以使用時間片輪轉技術 ,可以讓CPU快速的在各個線程之間進行切換, 對于用來來說,感覺是三個線程在同時執行.如果是多核心CPU,可以為不同的線程分配不同的CPU內核。