頭發(fā)都白了旦事,才知道如何實(shí)現(xiàn)多線程 ~ ~

頭發(fā)都白了么翰,才知道如何實(shí)現(xiàn)多線程 ~ ~
注:本文轉(zhuǎn)載于:CodeCow · 程序牛 的個(gè)人博客:http://www.codecow.cn/
《 古時(shí)一劍闖蕩天下青灼,如今一賤放蕩世界 —— 哈哈 》

?最近小編面試遇到一道關(guān)于多線程的問題暴心,偶有所得,心血來潮之際杂拨,便做了一下梳理专普,不多BB 上代碼 ~~

思考

小伙伴們都知道,一個(gè)程序在沒有跳轉(zhuǎn)語(yǔ)句的前提下扳躬,都是由上至下依次執(zhí)行脆诉,那現(xiàn)在想要設(shè)計(jì)一個(gè)程序甚亭,邊 擼代碼看島國(guó)大片 ,怎么設(shè)計(jì)击胜?
因此:要解決上述問題,咱們得使用 多進(jìn)程 或者 多線程 來解決

實(shí)現(xiàn)多線程兩種基本方法

繼承Thread類亏狰、實(shí)現(xiàn)Runnable接口

Thread類

首先我們看看java.lang.Thread 類,中相關(guān)的方法

構(gòu)造方法:
public Thread() :分配一個(gè)新的線程對(duì)象偶摔。 
public Thread(String name) :分配一個(gè)指定名字的新的線程對(duì)象暇唾。 
public Thread(Runnable target) :分配一個(gè)帶有指定目標(biāo)新的線程對(duì)象。 
public Thread(Runnable target,String name) :分配一個(gè)帶有指定目標(biāo)新的線程對(duì)象并指定名字辰斋。

常用方法:
public String getName() :獲取當(dāng)前線程名稱策州。 
public void start() :導(dǎo)致此線程開始執(zhí)行; Java虛擬機(jī)調(diào)用此線程的run方法。 
public void run() :此線程要執(zhí)行的任務(wù)在此處定義代碼宫仗。 
public static void sleep(long millis) :使當(dāng)前正在執(zhí)行的線程以指定的毫秒數(shù)暫停(暫時(shí)停止執(zhí)行)
public static Thread currentThread() :返回對(duì)當(dāng)前正在執(zhí)行的線程對(duì)象的引用够挂。

通過繼承Thread類來創(chuàng)建并啟動(dòng)多線程步驟:
1. 定義Thread類的子類,并重寫該類的run()方法藕夫,該run()方法的方法體就代表了線程需要完成的任務(wù),因此把 run()方法稱為線程執(zhí)行體孽糖。 
2. 創(chuàng)建Thread子類的實(shí)例,即創(chuàng)建了線程對(duì)象 
3. 調(diào)用線程對(duì)象的start()方法來啟動(dòng)該線程

代碼及測(cè)試在最后?

Runnable接口

java.lang.Runnable 也是創(chuàng)建線程的一種方法毅贮,我們只需要重寫run方法即可

如何創(chuàng)建線程:
1. 定義Runnable接口的實(shí)現(xiàn)類办悟,并重寫該接口的run()方法,該run()方法的方法體同樣是該線程的線程執(zhí)行體滩褥。 
2. 創(chuàng)建Runnable實(shí)現(xiàn)類的實(shí)例病蛉,并以此實(shí)例作為Thread的target來創(chuàng)建Thread對(duì)象,該Thread對(duì)象才是真正 的線程對(duì)象瑰煎。 
3. 調(diào)用線程對(duì)象的start()方法來啟動(dòng)線程铺然。
 
代碼及測(cè)試在最后?

繼承Thread類來創(chuàng)建 代碼如下


public class TestThread {

    public static void main(String[] args) {
        MyThread mt = new MyThread("新線程————看島國(guó)大片");
        //開啟新線程
        mt.start();
        //在主方法中執(zhí)行for循環(huán)
        for (int i = 0; i < 5; i++) {
            System.out.println("main線程————擼代碼,沒意思丢间。探熔。" + i);
        }
    }

    public static class MyThread extends Thread {
        //定義指定線程名稱的構(gòu)造方法
        public MyThread(String name) {
            //調(diào)用父類的String參數(shù)的構(gòu)造方法,指定線程的名稱(原理:利用繼承特點(diǎn)烘挫,將線程名稱傳遞)
            super(name);
        }

        //重寫run方法诀艰,定義線程要執(zhí)行的代碼
        @Override
        public void run() {
            for (int j = 0; j < 5; j++) {
                //getName()方法 來自父親(就是Thread類中,獲取當(dāng)前線程名稱方法)
                System.out.println(getName() + " : 好刺激喲饮六,不行了其垄,快、快卤橄。绿满。" + j);
            }
        }
    }
}

繼承Thread類 測(cè)試結(jié)果

在這里插入圖片描述

實(shí)現(xiàn)Runnable接口來創(chuàng)建 代碼如下

方法一:最原始寫法


public class TestRunnable implements Runnable{

    //重寫run()方法, 寫自己需要的代碼
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            //currentThread() 返回對(duì)當(dāng)前正在執(zhí)行的線程對(duì)象的引用
            System.out.println(Thread.currentThread().getName()+" : 好刺激喲,不行了窟扑,快喇颁、快漏健。。" + i);
        }
    }

    public static void main(String[] args) {
        //創(chuàng)建自定義類對(duì)象 線程任務(wù)對(duì)象
        TestRunnable mr = new TestRunnable();
        //創(chuàng)建線程對(duì)象
        Thread t = new Thread(mr, "新線程————看島國(guó)大片");
        t.start();
        for (int i = 0; i < 5; i++) {
            System.out.println("main線程————擼代碼橘霎,沒意思蔫浆。。" + i);
        }
    }
}

方法二:Lambda表達(dá)式 + 匿名內(nèi)部類 寫法


public class TestRunnableByLambda {
    
    public static void main(String[] args) {
        new Thread(() -> {
            for (int i = 0; i < 5; i++) {
                System.out.println("新線程————看島國(guó)大片 : 好刺激喲姐叁,不行了瓦盛,快、快外潜。原环。" + i);
            }
        }).start();
        for (int i = 0; i < 5; i++) {
            System.out.println("main線程————擼代碼,沒意思处窥。嘱吗。" + i);
        }
    }
}

繼承Thread類 測(cè)試結(jié)果

在這里插入圖片描述

最后:

不足之處,還望小伙伴多多諒解碧库;
有錯(cuò)之處柜与,還望小伙伴指出,小編會(huì)盡快改正

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嵌灰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子颅悉,更是在濱河造成了極大的恐慌沽瞭,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剩瓶,死亡現(xiàn)場(chǎng)離奇詭異驹溃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)延曙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門豌鹤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人枝缔,你說我怎么就攤上這事布疙。” “怎么了愿卸?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵灵临,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我趴荸,道長(zhǎng)儒溉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任发钝,我火速辦了婚禮顿涣,結(jié)果婚禮上波闹,老公的妹妹穿的比我還像新娘。我一直安慰自己涛碑,他們只是感情好舔痪,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锌唾,像睡著了一般锄码。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晌涕,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天滋捶,我揣著相機(jī)與錄音,去河邊找鬼余黎。 笑死重窟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惧财。 我是一名探鬼主播巡扇,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼垮衷!你這毒婦竟也來了厅翔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤搀突,失蹤者是張志新(化名)和其女友劉穎刀闷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仰迁,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甸昏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了徐许。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片施蜜。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖雌隅,靈堂內(nèi)的尸體忽然破棺而出翻默,到底是詐尸還是另有隱情,我是刑警寧澤澄步,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布冰蘑,位于F島的核電站,受9級(jí)特大地震影響村缸,放射性物質(zhì)發(fā)生泄漏祠肥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仇箱。 院中可真熱鬧县恕,春花似錦、人聲如沸剂桥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)权逗。三九已至美尸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間斟薇,已是汗流浹背师坎。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留堪滨,地道東北人胯陋。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像袱箱,于是被迫代替她去往敵國(guó)和親遏乔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344