久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      java線程中start方法與run方法的區(qū)別是什么

      java線程中start方法與run方法的區(qū)別是什么

      區(qū)別對(duì)比如下:

      我們知道Java中的線程是通過Java.lang.Thread來實(shí)現(xiàn)的,那么我們就可以通過實(shí)例化Thread一個(gè)對(duì)象來創(chuàng)建一個(gè)線程,然后再調(diào)用start()啟動(dòng),但是Thread的一個(gè)特定的方法run()也可以啟動(dòng)線程,那么這兩個(gè)方法有什么區(qū)別呢?

      線程狀態(tài)

      在Java當(dāng)中,線程通常有五種狀態(tài):創(chuàng)建、運(yùn)行、阻塞、等待、終止 NEW------------------->新建狀態(tài),沒有調(diào)用start()之前的狀態(tài) RUNNABLE---------->運(yùn)行狀態(tài),(running執(zhí)行中,ready就緒(等待cpu時(shí)間片)) BLOCKED------------>阻塞狀態(tài), WAITING-------------->等待狀態(tài),沒有明確的等待結(jié)束時(shí)間,調(diào)用wait() TIMED_WAITING—>超時(shí)等待狀態(tài),有明確的等待時(shí)間,如:sleep(xxx) TERMINATED-------->終止?fàn)顟B(tài)

      多線程原理:

      我們一般使用thread new一個(gè)線程,然后調(diào)用start方法啟動(dòng),線程就會(huì)處于運(yùn)行狀態(tài)中ready,等待CPU調(diào)度,然后再執(zhí)行線程里面的run()方法,使用start方法才真正實(shí)現(xiàn)了多線程運(yùn)行,因?yàn)檫@個(gè)時(shí)候不用等待我們的run方法執(zhí)行完成就可以繼續(xù)執(zhí)行下面的代碼,這才叫多線程。

      如果直接使用thread執(zhí)行run方法會(huì)怎么樣呢?

      因?yàn)閞un方法是thread里面的一個(gè)普通的方法,如果直接調(diào)用run()方法,這個(gè)時(shí)候它會(huì)運(yùn)行在主線程中的,因?yàn)槌绦蛑兄挥兄骶€程一個(gè)線程,如果有兩個(gè)線程,都是直接調(diào)用run()方法,那么他們的執(zhí)行順序一定是按順序執(zhí)行的,并沒有實(shí)現(xiàn)多線程的目的。

      免費(fèi)學(xué)習(xí)視頻分享:java視頻教程

      代碼對(duì)比

      public class ThreadDemo5 {     public static final boolean flag=false;     public static void main(String[] args) {         Thread t1=new Thread(new Runnable() {             @Override             public void run() {                 System.out.println(Thread.currentThread().getName());             }         });         t1.start();     } }

      調(diào)用start()方法,線程名是默認(rèn)的

      java線程中start方法與run方法的區(qū)別是什么

      public class ThreadDemo5 {     public static final boolean flag=false;     public static void main(String[] args) {         Thread t1=new Thread(new Runnable() {             @Override             public void run() {                 System.out.println(Thread.currentThread().getName());             }         });         t1.run();     } }

      調(diào)用run(),線程名是main

      java線程中start方法與run方法的區(qū)別是什么

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)