<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 信號量 計數信號量\(Counting Semaphore\)用來控制同時訪問某個特定資源的操作數量,或者同時執行某個指定操作的數量; Semaphore管理著一組虛擬許可\(permit\),許可的初始數量可通過構造函數來指定;在執行操作時先獲取許可\(只要還有剩余的許可\),使用完成后釋放許可;如果沒有許可那么acquire將阻塞直到有許可\(或者被中斷或操作超時\);release方法將返回一個許可給信號量; 初始值為1的Semaphore稱為二值信號量;二值信號量可以用作互斥體\(mutex\),并具備不可重入的加鎖語義;誰擁有這個唯一的許可誰就擁有了互斥鎖; 使用場景: Semaphore是一件可以容納N人的房間,如果人不滿就可以進去,如果人滿了,就要等待有人出來 ``` /** * 假設公司體檢,房間里一共有3位體檢醫師,所以一次可以進入3個人,有人出來就有人可以進去 */ public class Appliction { public static void main(String[] args) throws InterruptedException, ExecutionException, TimeoutException { Semaphore semaphore = new Semaphore(3); for (int i = 0; i < 100; i++) { new Thread(new PhysicalExaminationTask(semaphore)).start(); } } } class PhysicalExaminationTask implements Runnable{ private Semaphore semaphore; public PhysicalExaminationTask(Semaphore semaphore){ this.semaphore = semaphore; } @Override public void run() { try { semaphore.acquire(); } catch (InterruptedException e) { e.printStackTrace(); } int time = new Random().nextInt(5); if (time > 0) { try { TimeUnit.SECONDS.sleep(time); } catch (InterruptedException e) { e.printStackTrace(); } } System.err.println(Thread.currentThread().getName() + " finished"); semaphore.release(); } } ```
                  <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>

                              哎呀哎呀视频在线观看