多線程(三)---調用start和run的區別

多線程(三)---調用start和run的區別

總結經驗

Thread 中的start() 只作兩件事 1:開啓線程 2:調用run方法

調用start和run方法區別?

調用start會開啓線程,讓開啓的線程去執行run方法中的線程任務。直接調用run方法,線程並未開啓,去執行run方法的只有主線程

一 . 第一段代碼分析

只執行run方法,並未開啓線程

1: 繼承線程Thread類,建立子類對象,就是建立線程對象

2: 調用start方法

3: 因爲start被覆蓋並未開啓線程,只是運行run方法

4: run方法打印結果是真正在運行的線程,main...李四...0

5: 打印的是真正的線程main--------------0

因爲demo1,demo2線程未被開啓,只有主線程在執行,demo1,demo2只是執行run方法

運行結果:

運行結果

二 . 第二段代碼分析

開啓線程

運行結果:

運行結果

線程內存圖

線程堆棧內存分配

相關文章
相關標籤/搜索