最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 線程中start方法與run方法的區(qū)別詳細介紹

 更新時間:2016年11月28日 10:38:09   投稿:lqh  
這篇文章主要介紹了java 線程中start方法與run方法的區(qū)別詳細介紹的相關資料,在java線程中調(diào)用start方法與run方法的區(qū)別在哪里? 這兩個問題是兩個非常流行的初學者級別的多線程面試問題,這里進行詳細說明,需要的朋友可以參考下

線程中start方法與run方法的區(qū)別

在線程中,如果start方法依次調(diào)用run方法,為什么我們會選擇去調(diào)用start方法?或者在java線程中調(diào)用start方法與run方法的區(qū)別在哪里?  這兩個問題是兩個非常流行的初學者級別的多線程面試問題。當一個Java程序員開始學習線程的時候,他們首先會學著去繼承Thread類,重載run方法或者實現(xiàn)Runnable接口,實現(xiàn)run方法,然后調(diào)用Thread實例的start方法。但是當他擁有一些經(jīng)驗之后,他通過查看API文檔或者其他途徑會發(fā)現(xiàn)start方法內(nèi)部會調(diào)用run方法,但是我們中的很多人知道面試時被問到的時候才會意識到這個問題的重要性。在這個java教程里,我們將會明白java中開啟線程的時候調(diào)用start方法和run方法的不同的地方

這篇文章是我們再起在Java多線程上發(fā)表的一些文章的后序部分,E.G. Difference between Runnable and Thread in Java AND How to solve Producer Consumer problem in Java using BlockingQueue.如果你還沒有讀過他們,你可能將會發(fā)現(xiàn)他們還是很有趣并且很有用的

在java線程中 start與run的不同

start與run方法的主要區(qū)別在于當程序調(diào)用start方法一個新線程將會被創(chuàng)建,并且在run方法中的代碼將會在新線程上運行,然而在你直接調(diào)用run方法的時候,程序并不會創(chuàng)建新線程,run方法內(nèi)部的代碼將在當前線程上運行。大多數(shù)情況下調(diào)用run方法是一個bug或者變成失誤。因為調(diào)用者的初衷是調(diào)用start方法去開啟一個新的線程,這個錯誤可以被很多靜態(tài)代碼覆蓋工具檢測出來,比如與fingbugs. 如果你想要運行需要消耗大量時間的任務,你最好使用start方法,否則在你調(diào)用run方法的時候,你的主線程將會被卡住。另外一個區(qū)別在于,一但一個線程被啟動,你不能重復調(diào)用該thread對象的start方法,調(diào)用已經(jīng)啟動線程的start方法將會報IllegalStateException異常,  而你卻可以重復調(diào)用run方法

下面是start方法和run方法的demo

線程中的任務是打印線程傳入的String值 已經(jīng)當前線程的名字

這里可以明確的看到兩者的區(qū)別



public class DiffBewteenStartAndRun { 
 
 
  public static void main(String args[]) { 
 
 
    System.out.println(Thread.currentThread().getName()); 
    // creating two threads for start and run method call 
    Thread startThread = new Thread(new Task("start")); 
    Thread runThread = new Thread(new Task("run")); 
 
 
    startThread.start(); // calling start method of Thread - will execute in 
                // new Thread 
    runThread.run(); // calling run method of Thread - will execute in 
              // current Thread 
 
 
  } 
 
 
  /* 
   * Simple Runnable implementation 
   */ 
  private static class Task implements Runnable { 
    private String caller; 
 
 
    public Task(String caller) { 
      this.caller = caller; 
    } 
 
 
    @Override 
    public void run() { 
      System.out.println("Caller: " + caller 
          + " and code on this Thread is executed by : " 
          + Thread.currentThread().getName()); 
 
 
    } 
  } 
} 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • Springboot 自定義校驗代碼實例

    Springboot 自定義校驗代碼實例

    這篇文章主要介紹了Springboot 自定義校驗代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Java8新特性之再見Permgen_動力節(jié)點Java學院整理

    Java8新特性之再見Permgen_動力節(jié)點Java學院整理

    這篇文章主要介紹了Java8新特性之再見Permgen的相關知識,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
    2017-06-06
  • Java跨域問題分析與解決方法詳解

    Java跨域問題分析與解決方法詳解

    這篇文章主要介紹了Java跨域問題分析與解決方法,跨域問題是在Web應用程序中,由于同源策略的限制,導致瀏覽器無法發(fā)送跨域請求,也無法獲取跨域響應的問題,感興趣想要詳細了解可以參考下文
    2023-05-05
  • java數(shù)據(jù)庫連接、查詢、更新等

    java數(shù)據(jù)庫連接、查詢、更新等

    這篇文章主要介紹了java數(shù)據(jù)庫連接、查詢、更新等,需要的朋友可以參考下
    2018-05-05
  • JAVA如何把數(shù)據(jù)庫的數(shù)據(jù)處理成樹形結構

    JAVA如何把數(shù)據(jù)庫的數(shù)據(jù)處理成樹形結構

    本文介紹了JAVA如何把數(shù)據(jù)庫的數(shù)據(jù)處理成樹形結構,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Spring事件監(jiān)聽機制使用和原理示例講解

    Spring事件監(jiān)聽機制使用和原理示例講解

    Spring事件監(jiān)聽機制是一個很不錯的功能,我們在進行業(yè)務開發(fā)的時候可以引入,在相關的開源框架中也是用它的身影,比如高性能網(wǎng)關ShenYu中就使用了Spring事件監(jiān)聽機制來發(fā)布網(wǎng)關的更新數(shù)據(jù),它可以降低系統(tǒng)的耦合性,使系統(tǒng)的擴展性更好
    2023-06-06
  • Spring Boot啟動過程完全解析(一)

    Spring Boot啟動過程完全解析(一)

    這篇文章主要介紹了Spring Boot啟動過程完全解析(一),需要的朋友可以參考下
    2017-04-04
  • java中將一個List等分成n個list的工具方法(推薦)

    java中將一個List等分成n個list的工具方法(推薦)

    下面小編就為大家?guī)硪黄猨ava中將一個List等分成n個list的工具方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • Mac?M1安裝JDK的實戰(zhàn)避坑指南

    Mac?M1安裝JDK的實戰(zhàn)避坑指南

    這篇文章主要給大家介紹了關于Mac?M1安裝JDK避坑的相關資料,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-02-02
  • HashMap原理及put方法與get方法的調(diào)用過程

    HashMap原理及put方法與get方法的調(diào)用過程

    這篇文章主要介紹了HashMap原理及put方法與get方法的調(diào)用過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論

延边| 铜鼓县| 灵山县| 博爱县| 莎车县| 镶黄旗| 四子王旗| 韶关市| 麻江县| 白朗县| 凤山县| 东安县| 黄石市| 库车县| 富川| 门头沟区| 江城| 平遥县| 张北县| 航空| 固安县| 长宁县| 衡阳县| 长子县| 玉溪市| 扬州市| 莆田市| 张家川| 格尔木市| 房产| 乐业县| 河北省| 扶风县| 巴塘县| 涞水县| 光泽县| 佛冈县| 枞阳县| 蓬溪县| 乌海市| 建德市|