溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java如何實(shí)現(xiàn)多線程

發(fā)布時(shí)間:2020-10-09 15:47:35 來(lái)源:億速云 閱讀:124 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下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è)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI