真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java中Thread.start()和Thread.run()之間的區(qū)別有哪些

這篇文章將為大家詳細(xì)講解有關(guān)Java中Thread.start()和Thread.run()之間的區(qū)別有哪些,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái),是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元渭源做網(wǎng)站,已為上家服務(wù),為渭源各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):18980820575

Java中的start()方法

線(xiàn)程類(lèi)的start()方法可以用來(lái)啟動(dòng)線(xiàn)程;該方法會(huì)在內(nèi)部調(diào)用Runnable接口的run()方法,以在單獨(dú)的線(xiàn)程中執(zhí)行run()方法中指定的代碼。

start()方法啟動(dòng)線(xiàn)程執(zhí)行以下任務(wù):

●   它統(tǒng)計(jì)了一個(gè)新線(xiàn)程

●   線(xiàn)程從New State移動(dòng)到Runnable狀態(tài)。

●   當(dāng)線(xiàn)程有機(jī)會(huì)執(zhí)行時(shí),它的目標(biāo)run()方法將運(yùn)行。

Java中的run()方法

線(xiàn)程類(lèi)的run()方法是Runnable接口的一個(gè)抽象方法,由java虛擬機(jī)直接調(diào)用的,不會(huì)創(chuàng)建的新線(xiàn)程。

start()方法和run()方法的區(qū)別

1、方法的定義

start()方法在java.lang.Thread類(lèi)中定義;而,run()方法在java.lang.Runnable接口中定義,必須在實(shí)現(xiàn)類(lèi)中重寫(xiě)。

2、新線(xiàn)程創(chuàng)建

當(dāng)程序調(diào)用start()方法時(shí),會(huì)創(chuàng)建一個(gè)新線(xiàn)程,然后執(zhí)行run()方法。但是如果我們直接調(diào)用run()方法,則不會(huì)創(chuàng)建新的線(xiàn)程,run()方法將作為當(dāng)前調(diào)用線(xiàn)程本身的常規(guī)方法調(diào)用執(zhí)行,并且不會(huì)發(fā)生多線(xiàn)程。

示例:

class MyThread extends Thread { 
    public void run() 
    { 
System.out.println("\n"); 
        System.out.println("當(dāng)前線(xiàn)程的名稱(chēng): "
                           + Thread.currentThread().getName()); 
        System.out.println("run()方法調(diào)用"); 
    } 
} 
  
class demo { 
    public static void main(String[] args) 
    { 
        MyThread t = new MyThread(); 
        t.start(); 
    } 
}

輸出:

Java中Thread.start()和Thread.run()之間的區(qū)別有哪些

正如我們?cè)谏厦娴睦又兴吹降?,?dāng)我們調(diào)用線(xiàn)程類(lèi)實(shí)例的start()方法時(shí),會(huì)創(chuàng)建一個(gè)新的線(xiàn)程,默認(rèn)名稱(chēng)為T(mén)hread-0,然后調(diào)用run()方法,并在其中執(zhí)行所有內(nèi)容。新創(chuàng)建的線(xiàn)程。

現(xiàn)在,讓我們嘗試直接調(diào)用run()方法而不是start()方法:

class MyThread extends Thread { 
    public void run() 
    { 
System.out.println("\n"); 
        System.out.println("當(dāng)前線(xiàn)程的名稱(chēng): "
                           + Thread.currentThread().getName()); 
  
        System.out.println("run()方法調(diào)用"); 
    } 
} 
  
class GeeksforGeeks { 
    public static void main(String[] args) 
    { 
        MyThread t = new MyThread(); 
        t.run(); 
    } 
}

輸出:

Java中Thread.start()和Thread.run()之間的區(qū)別有哪些

正如我們?cè)谏厦娴睦又兴吹降?,?dāng)我們調(diào)用MyThread類(lèi)的run()方法時(shí),沒(méi)有創(chuàng)建新線(xiàn)程,并且在當(dāng)前線(xiàn)程即主線(xiàn)程上執(zhí)行run()方法。因此,沒(méi)有發(fā)生多線(xiàn)程。run()方法是作為正常函數(shù)被調(diào)用。

3、多次調(diào)用

start()方法不能多次調(diào)用,否則拋出java.lang.IllegalStateException;而,run()方法可以進(jìn)行多次調(diào)用,因?yàn)樗皇且环N正常的方法調(diào)用。

關(guān)于Java中Thread.start()和Thread.run()之間的區(qū)別有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


網(wǎng)頁(yè)名稱(chēng):Java中Thread.start()和Thread.run()之間的區(qū)別有哪些
鏈接地址:http://weahome.cn/article/gsgeid.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部