進程:(在linux系統裏面ps-ef能看見的都是進程),在jvm中,jvm(內存)會爲一個進程分配一個獨立空間
線程:操作系統爲進程分配了一個獨立的空間,在這個獨立的空間內部還可以再把自己的空間細分,這就是線程。thread就是一個線程,線程和線程可以獨立空間,裏面有自己的 棧(內存空間,存一些局部變量和操作數),線程工作本質就是去調用一些方法。
例如:qq是進程,和qq裏面的每一個好友聊天,這就是線程(和每一個好友聊天都會開啓一個線程)
多線程原理:
cup在線程中做時間片的切換,
cup負責運行程序,如果多個程序開始執行,cup會在這些程序之間快速的切換,實際是在程序上的線程上面快速的切換。
thread.run()和thread.start()的區別:
run只是簡單的方法調用,還在主線程裏面,在一個空間裏面,同一個線程裏面。
start是開啓了一個新的空間,裏面有自己變量存儲空間,和自己的計數器,不在主線程裏面。