小編給大家分享一下java如何實現(xiàn)多線程,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
成都創(chuàng)新互聯(lián)公司為企業(yè)級客戶提高一站式互聯(lián)網(wǎng)+設(shè)計服務(wù),主要包括成都網(wǎng)站制作、網(wǎng)站設(shè)計、手機APP定制開發(fā)、小程序定制開發(fā)、宣傳片制作、LOGO設(shè)計等,幫助客戶快速提升營銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗豐富的經(jīng)驗,可以確保每一個作品的質(zhì)量和創(chuàng)作周期,同時每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。需求:我們要實現(xiàn)多線程的程序
如何實現(xiàn):
由于線程是依賴于進程而存在的,所以我們應(yīng)該先創(chuàng)建一個進程出來
而進程是由系統(tǒng)創(chuàng)建的,所以我們應(yīng)該去調(diào)用系統(tǒng)功能創(chuàng)建一個進程
但是,Java是不能直接調(diào)用系統(tǒng)功能的,所以,我們沒有辦法直接實現(xiàn)多線程程序
但是呢,Java可以直接調(diào)用C/C++寫好的程序來實現(xiàn)多線程程序
由于C/C++去調(diào)用系統(tǒng)功能創(chuàng)建進程,然后Java去調(diào)用這樣的東西
然后提供一些類供我們使用。我們就可以實現(xiàn)多線程
那么Java提供的類是什么?
Thread
通過查看API,我們知道了有兩種方法實現(xiàn)多線程
方式一:繼承Thread類
步驟:
A:自定義類MyThread繼承Thread類
B:MyThread類里面重寫run();
為什么是run()方法呢?
不是類種的所有代碼都需要被線程執(zhí)行
而這個時候,為了區(qū)分那些代碼能夠被多線程執(zhí)行,Java提供了Thread類中的run()方法
用來包含哪些被線程執(zhí)行的代碼
C:創(chuàng)建對象
D:啟動線程
示例:
package cn.itcast_01; public class 如何實現(xiàn)多線程及其多線程方式1的思路 { public static void main(String[] args) { // 創(chuàng)建線程對象 MyThread my = new MyThread(); //啟動線程 my.run(); my.run(); //調(diào)用run();方法為什么是單線程呢? //因為run();方法的直接調(diào)用其實就相當于普通方法調(diào)用,所有你看到的是單線程的效果 //想要看到多線程的效果,就必須說另一個方法:start() //面試題run()和start()的區(qū)別 //run():僅僅是封裝被線程執(zhí)行的代碼,直接調(diào)用依舊是普通方法 //start():首先啟動了線程,然后再由JVM去調(diào)用該線程的run()方法 MyThread my = new MyThread(); my.start(); my.start();//IllegalThreadStateException:非法的線程狀態(tài)異常 //為什么呢? //因為這是相當于my線程別調(diào)用了兩次。而不是兩個線程的啟動 //創(chuàng)建兩個線程 MyThread my1 = new MyThread(); MyThread my2 = new MyThread(); my1.start(); my2.start(); } }
看完了這篇文章,相信你對java如何實現(xiàn)多線程有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!