一篇文中細(xì)看Java多線程的創(chuàng)建方式
前言
Java現(xiàn)在有四種創(chuàng)建的方式:繼承Threa類、實(shí)現(xiàn)Runnable接口、實(shí)現(xiàn)Callable接口、線程池
Thread、Runnable都在java.lang包下;Callable、線程池都在java.util.concurrent包下
1.繼承Thread類,重寫run方法
創(chuàng)建一個(gè)類繼承Thread類,并重寫run();因?yàn)閞un()是線程具體執(zhí)行的方法。
在測試類或者main()創(chuàng)建Thread對象,并調(diào)用start()啟動線程
備注:start()是啟動線程,run()是線程執(zhí)行的業(yè)務(wù)方法
2.實(shí)現(xiàn)Runnable接口,通過參數(shù)方式創(chuàng)建線程
創(chuàng)建一個(gè)類實(shí)現(xiàn)Runnable接口并重寫run()
在測試類或者main()創(chuàng)建Thread對象,并傳入該接口實(shí)現(xiàn)類對象,并調(diào)用start()啟動線程
3.實(shí)現(xiàn)Callable接口,通過FutureTask來創(chuàng)建線程
創(chuàng)建一個(gè)類實(shí)現(xiàn)Callable接口,重寫call()call()支持有返回值和拋異常Callable支持泛型
傳入Callable對象,創(chuàng)建FutureFask類
備注:FutureTask實(shí)現(xiàn)了Runnable接口;FutureTask.get()可以獲取call()返回值
創(chuàng)建Thread對象,并調(diào)用start方法啟動線程
4.通過線程池方式創(chuàng)建線程
創(chuàng)建一個(gè)類實(shí)現(xiàn)Runnable或者Callable接口,并重寫對應(yīng)方法
創(chuàng)建一個(gè)線程池對象,并執(zhí)行execute方法啟動線程
備注:可以通過線程池方式管理線程個(gè)數(shù)等配置信息
幾種創(chuàng)建方式想必大家都已了解,但在實(shí)際開發(fā)中大多數(shù)都是以線程池來操作線程的;
線程池優(yōu)勢:提升響應(yīng)速度,提高資源重用率,便于管理
線程的生命周期
總結(jié)
到此這篇關(guān)于一篇文中細(xì)看Java多線程的創(chuàng)建方式的文章就介紹到這了,更多相關(guān)Java多線程創(chuàng)建方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java基于drools做規(guī)則校驗(yàn)的實(shí)現(xiàn)
工作中需要開發(fā)一個(gè)規(guī)則服務(wù),提供各種規(guī)則,本文主要介紹了Java基于drools做規(guī)則校驗(yàn)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Spring中使用事務(wù)嵌套時(shí)需要警惕的問題分享
最近項(xiàng)目上有一個(gè)使用事務(wù)相對復(fù)雜的業(yè)務(wù)場景報(bào)錯了。在絕大多數(shù)情況下,都是風(fēng)平浪靜,沒有問題。其實(shí)內(nèi)在暗流涌動,在有些異常情況下就會報(bào)錯,這種偶然性的問題很有可能就會在暴露到生產(chǎn)上造成事故,那究竟是怎么回事呢?本文就來簡單講講2023-04-04IDEA在一個(gè)項(xiàng)目空間下管理多個(gè)項(xiàng)目的操作方法
這篇文章主要介紹了IDEA如何在一個(gè)項(xiàng)目空間下管理多個(gè)項(xiàng)目,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04