<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                > ### Thread類方法 * yield ~~~ yield是native修飾的原生方法,作用是當前線程讓出執行機會,讓cpu可以優先調用其它線程。 ? 特點: 1.當前線程不會阻塞,同樣有執行機會 2.靜態方法,一般用于當前線程讓步 3.如果獲得鎖,不會釋放 ~~~ * join ~~~ 線程讓另一個線程先執行完后再執行。 ? 特點: 1. 當前線程阻塞,直到加入線程執行完畢 2. 方法響應終斷 3. 如果獲得鎖,不會釋放 ~~~ ep: ~~~ public static void main(String arg[]){ ? ? Thread A = new Thread(); ? ? A.join(); // 表示當前線程(main)讓A線程執行完畢后繼續執行 } ~~~ * sleep ~~~ 靜態方法,表示讓當前線程睡眠一段時間。 ? 特點: 1.當前線程阻塞,直到睡眠時間結束 2.方法響應終斷 3.如果獲得鎖,不會釋放 ~~~ * stop、suspend、resume ~~~ stop: ? 1. 即刻停止run()方法中剩余的全部工作,包括在catch或finally語句中,并拋出ThreadDeath異常(通常情況下此異常不需要顯示的捕獲),因此可能會導致一些清理性的工作的得不到完成,如文件,數據庫等的關閉。 ? 2. 會立即釋放該線程所持有的所有的鎖,導致數據得不到同步的處理,出現數據不一致的問題。 ~~~ ~~~ suspend和resume: ? 這兩個方法一般會同時出現,否則會容易發生死鎖。suspend將線程掛起,只有調用resume才能重新執行。線程掛起期間,并不會去釋放任何擁有的鎖資源。 ~~~ > ### Object類方法 - wait 和 notify ~~~ wait 將當前線程掛起,釋放鎖資源, 直到執行notify或者notifyAll激活該線程重新執行。 ? notify 激活一個阻塞的線程。 ? notifyAll 激活所有阻塞的線程 ~~~ * [ ] tip: wait、notify、notifyAll都是Object里的方法,和任何Object都能成為synchronized的鎖對象一樣,這些方法和鎖之間存在著關聯,當任何對象使用方法時必須在同步方法塊或者同步方法中執行,并且鎖對象必須為執行方法的對象。 * [ ] ep: ~~~ static Object lock = new Object(); ? public static void main(String []arg) throws Exception{ ? ? ?new Thread(()->{ ? ? ? ? ?synchronized(lock){ ? ? ? ? ? ? ?System.out.println("線程等待"); ? ? ? ? ? ? ? try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } ? ? ? ? } ? ? ? ? ?System.out.println("線程執行完成"); ? ? },"等待").start(); ? ? ? ? Thread.sleep(1000); ? ? ? ? new Thread(()->{ ? ? ? ? ?synchronized(lock){ ? ? ? ? ? ? ?System.out.println("激活線程"); ? ? ? ? ? ? ?lock.notify(); ? ? ? ? } ? ? },"激活").start(); ? ? ? ?System.in.read(); } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看