亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java線程啟動為什么要用start()而不是run()?

 更新時間:2021年12月12日 10:56:54   作者:bkpp976  
這篇文章主要介紹了線程啟動為什么要用start()而不是run()?下面文章圍繞start()與run()的相關資料展開詳細內容,具有一定的參考價值,西藥的小火熬版可以參考一下,希望對你有所幫助

1、直接調用線程的run()方法

public class TestStart {
    public static void main(String[] args) throws InterruptedException {
       Thread t1 = new Thread(){

           @Override
           public void run() {
               System.out.println("Thread t1 is working..."+System.currentTimeMillis());
               try {
                   Thread.sleep(1000);
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
           }
       };
       t1.run();
       Thread.sleep(2000);
       System.out.println("Thread Main is doing other thing..."+System.currentTimeMillis());
    }
}

可以看到主線程在t1.run()運行之后再過三秒才繼續(xù)運行,也就是說,直接在主方法中調用線程的run()方法,并不會開啟一個線程去執(zhí)行run()方法體內的內容,而是同步執(zhí)行。

2、調用線程的start()方法

public class TestStart {
    public static void main(String[] args) throws InterruptedException {
       Thread t1 = new Thread(){

           @Override
           public void run() {
               System.out.println("Thread t1 is working..."+System.currentTimeMillis());
               try {
                   Thread.sleep(1000);
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
           }
       };
       t1.start();
       Thread.sleep(2000);
       System.out.println("Thread Main is doing other thing..."+System.currentTimeMillis());
    }
}

startVSrun1.JPG 可以看到在,在執(zhí)行完t1.start()這一行之后,主線程立馬繼續(xù)往下執(zhí)行,休眠2s后輸出內容。 也就是說,t1線程和主線程是異步執(zhí)行的,主線程在線程t1的start()方法執(zhí)行完成后繼續(xù)執(zhí)行后面的內容,無需等待run()方法體的內容執(zhí)行完成。

3、總結

  • 1、開啟一個線程必須通過start()方法,直接調用run()方法并不會創(chuàng)建線程,而是同步執(zhí)行run()方法中的內容。
  • 2、如果通過傳入一個Runnable對象創(chuàng)建線程,線程會執(zhí)行Runnable對象的run()方法;否則執(zhí)行自己本身的run()方法。
  • 3、不管是實現(xiàn)Runnable接口還是繼承Thread對象,都可以重寫run()方法,達到執(zhí)行設定的任務的效果。

到此這篇關于線程啟動為什么要用start()而不是run()?的文章就介紹到這了,更多相關start()與run()內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MyBatis中select語句中使用String[]數(shù)組作為參數(shù)的操作方法

    MyBatis中select語句中使用String[]數(shù)組作為參數(shù)的操作方法

    在 MyBatis 中,如何在 mapper.xml 配置文件中 select 語句中使用 String[] 數(shù)組作為參數(shù)呢,并且使用IN關鍵字來匹配數(shù)據(jù)庫中的記錄,這篇文章主要介紹了MyBatis中select語句中使用String[]數(shù)組作為參數(shù),需要的朋友可以參考下
    2023-12-12
  • Base64與File之間的相互轉化方式

    Base64與File之間的相互轉化方式

    這篇文章主要介紹了Base64與File之間的相互轉化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 使用sharding-jdbc實現(xiàn)水平分庫+水平分表的示例代碼

    使用sharding-jdbc實現(xiàn)水平分庫+水平分表的示例代碼

    本文主要介紹了使用sharding-jdbc實現(xiàn)水平分庫+水平分表,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Java報錯:Error:java:?程序包org.springframework.boot不存在解決辦法

    Java報錯:Error:java:?程序包org.springframework.boot不存在解決辦法

    建完springboot項目時,點擊啟動,有可能會報錯,下面這篇文章主要給大家介紹了關于Java報錯:Error:java:?程序包org.springframework.boot不存在的解決辦法,需要的朋友可以參考下
    2024-02-02
  • spring mvc4中相關注解的詳細講解教程

    spring mvc4中相關注解的詳細講解教程

    這篇文章主要給大家介紹了關于spring mvc4中相關注解的相關資料,其中詳細介紹了關于@Controller、@RequestMapping、@RathVariable、@RequestParam及@RequestBody等等注解的相關內容,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • java el簡介及用法

    java el簡介及用法

    EL簡介語法結構 運算符等資料代碼。
    2009-04-04
  • Kafka 網(wǎng)絡中斷和網(wǎng)絡分區(qū)4種場景分析

    Kafka 網(wǎng)絡中斷和網(wǎng)絡分區(qū)4種場景分析

    這篇文章主要介紹了Kafka 網(wǎng)絡中斷和網(wǎng)絡分區(qū)4種場景分析
    2007-02-02
  • Mybatis使用XML實現(xiàn)動態(tài)sql的示例代碼

    Mybatis使用XML實現(xiàn)動態(tài)sql的示例代碼

    當編寫 MyBatis 中復雜動態(tài) SQL 語句時,使用 XML 格式是一種非常靈活的方式,本文主要為大家詳細介紹了Mybatis使用XML實現(xiàn)動態(tài)sql的具體方法,需要的可以參考下
    2023-12-12
  • Springboot整合SpringSecurity的完整案例詳解

    Springboot整合SpringSecurity的完整案例詳解

    Spring Security是基于Spring生態(tài)圈的,用于提供安全訪問控制解決方案的框架,Spring Security登錄認證主要涉及兩個重要的接口 UserDetailService和UserDetails接口,本文對Springboot整合SpringSecurity過程給大家介紹的非常詳細,需要的朋友參考下吧
    2024-01-01
  • Java中的垃圾收集器詳解

    Java中的垃圾收集器詳解

    這篇文章主要介紹了Java中的垃圾收集器詳解,垃圾收集機制是?Java?的招牌能力,極大地提高了開發(fā)效率,如今垃圾收集幾乎成為現(xiàn)代語言的標配,需要的朋友可以參考下
    2023-07-07

最新評論