多线程中 start()和run()方法的区别
多線程中? start()和run()方法的區(qū)別:
Java線程一直是一個比較容易困擾的地方,首先,我們來認識下怎樣生存線程。
?
認識 Thread 和Runnable
?
java中實現(xiàn)多線程有兩種途徑:繼承Thread類或者實現(xiàn)Runnable接口。Runnable是接口,建議用接口的方式生成線程,
因為接口可以實現(xiàn)多繼承,況且Runnable只有一個run方法,很適合實現(xiàn)。
在使用Thread的時候只需繼承Thread,并且new一個實例出來,調(diào)用 start()方法即可以啟動一個線程。
Thread Test = new Thread();
Test.start();
在使用Runnable的時候需要先new一個實現(xiàn)Runnable的實例,之后啟動Thread即可。
Test impelements Runnable;
Test t = new Test();
Thread test = new Thread(t);
test.start();
總結(jié):Thread和Runnable是實現(xiàn)java多線程的2種方式,runable是接口,thread是類,建議使用runable實現(xiàn) java多線程,
不管如何,最終都需要通過thread.start()來使線程處于可運行狀態(tài)。
下面我們來談?wù)劚疚闹攸c,start()和run()方法的區(qū)別
1) start:
用start方法來啟動線程,真正實現(xiàn)了多線程運行,這時無需等待run方法體代碼執(zhí)行完畢而直接繼續(xù)執(zhí)行下面的代碼。
通過調(diào)用Thread類的start()方法來啟動一個線程,這時此線程處于就緒(可運行)狀態(tài),并沒有運行,一旦得到cpu時間片,就開始執(zhí)行run()方法,這里方法run()稱為線程體,它包含了要執(zhí)行的這個線程的內(nèi)容,Run方法運行結(jié)束,此線程隨即終止。
2) run:
run()方法只是類的一個普通方法而已,如果直接調(diào)用Run方法,程序中依然只有主線程這一個線程,其程序執(zhí)行路徑還是只有一條,還是要順序執(zhí)行,還是要等待run方法體執(zhí)行完畢后才可繼續(xù)執(zhí)行下面的代碼,這樣就沒有達到寫線程的目的。
總結(jié):調(diào)用start方法方可啟動線程,而run方法只是thread的一個普通方法調(diào)用,還是在主線程里執(zhí)行。
?
這兩個方法應(yīng)該都比較熟悉,把需要并行處理的代碼放在run()方法中,start()方法啟動線程將自動調(diào)用 run()方法,
這是由jvm的內(nèi)存機制規(guī)定的。并且run()方法必須是public訪問權(quán)限,返回值類型為void.
參考博文:https://blog.csdn.net/dada360778512/article/details/6965790
總結(jié)
以上是生活随笔為你收集整理的多线程中 start()和run()方法的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java项目转变为Java Web项目
- 下一篇: Java 8中获取参数名称