1. 程式人生 > >【線程系列一】線程如何運行

【線程系列一】線程如何運行

虛擬機 start rgs thread println 模式 搶占 art throws

1 public static void main(String[] args)throws Exception {
2         Thread th= new Thread(new MyRunnable("hello1"));
3         th.start();
4         System.out.println("當前主線程 "+Thread.currentThread().getName()); 
5         System.out.println("該線程 "+th.getName());
6 }

上述代碼,在內存中的狀態如下圖所示。執行步驟主要是下面四步。

1、運行上述java文件,由虛擬機執行類的入口main函數,分配了一個主線程。

2、main方法在主線程所在棧中,壓棧,實例一個新的子線程,並開啟了這個子線程

3、jvm給子線程分配了一塊子線程棧,並在這個子線程棧中,將run()壓棧執行。

4、由cpu調度各線程,分配給各線程的時間,由cpu決定,有兩種模式,分時調度和搶占調度。

技術分享

~分時調度

所有線程輪流使用 CPU 的使用權,平均分配每個線程占用 CPU 的時間。

~搶占式調度

優先讓優先級高的線程使用 CPU,如果線程的優先級相同,那麽會隨機選擇一個(線程隨機性),Java使用的為搶占式調度。

【線程系列一】線程如何運行