您好,登錄后才能下訂單哦!
小編給大家分享一下java如何實(shí)現(xiàn)多線程,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
需求:我們要實(shí)現(xiàn)多線程的程序
如何實(shí)現(xiàn):
由于線程是依賴于進(jìn)程而存在的,所以我們應(yīng)該先創(chuàng)建一個(gè)進(jìn)程出來(lái)
而進(jìn)程是由系統(tǒng)創(chuàng)建的,所以我們應(yīng)該去調(diào)用系統(tǒng)功能創(chuàng)建一個(gè)進(jìn)程
但是,Java是不能直接調(diào)用系統(tǒng)功能的,所以,我們沒(méi)有辦法直接實(shí)現(xiàn)多線程程序
但是呢,Java可以直接調(diào)用C/C++寫(xiě)好的程序來(lái)實(shí)現(xiàn)多線程程序
由于C/C++去調(diào)用系統(tǒng)功能創(chuàng)建進(jìn)程,然后Java去調(diào)用這樣的東西
然后提供一些類供我們使用。我們就可以實(shí)現(xiàn)多線程
那么Java提供的類是什么?
Thread
通過(guò)查看API,我們知道了有兩種方法實(shí)現(xiàn)多線程
方式一:繼承Thread類
步驟:
A:自定義類MyThread繼承Thread類
B:MyThread類里面重寫(xiě)run();
為什么是run()方法呢?
不是類種的所有代碼都需要被線程執(zhí)行
而這個(gè)時(shí)候,為了區(qū)分那些代碼能夠被多線程執(zhí)行,Java提供了Thread類中的run()方法
用來(lái)包含哪些被線程執(zhí)行的代碼
C:創(chuàng)建對(duì)象
D:啟動(dòng)線程
示例:
package cn.itcast_01; public class 如何實(shí)現(xiàn)多線程及其多線程方式1的思路 { public static void main(String[] args) { // 創(chuàng)建線程對(duì)象 MyThread my = new MyThread(); //啟動(dòng)線程 my.run(); my.run(); //調(diào)用run();方法為什么是單線程呢? //因?yàn)閞un();方法的直接調(diào)用其實(shí)就相當(dāng)于普通方法調(diào)用,所有你看到的是單線程的效果 //想要看到多線程的效果,就必須說(shuō)另一個(gè)方法:start() //面試題run()和start()的區(qū)別 //run():僅僅是封裝被線程執(zhí)行的代碼,直接調(diào)用依舊是普通方法 //start():首先啟動(dòng)了線程,然后再由JVM去調(diào)用該線程的run()方法 MyThread my = new MyThread(); my.start(); my.start();//IllegalThreadStateException:非法的線程狀態(tài)異常 //為什么呢? //因?yàn)檫@是相當(dāng)于my線程別調(diào)用了兩次。而不是兩個(gè)線程的啟動(dòng) //創(chuàng)建兩個(gè)線程 MyThread my1 = new MyThread(); MyThread my2 = new MyThread(); my1.start(); my2.start(); } }
看完了這篇文章,相信你對(duì)java如何實(shí)現(xiàn)多線程有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。