<delect id="ztpvj"></delect>
        <noframes id="ztpvj">

      <del id="ztpvj"><strike id="ztpvj"></strike></del>
      <noframes id="ztpvj">

      <rp id="ztpvj"></rp>

        <big id="ztpvj"></big>

          <video id="ztpvj"></video>
        <big id="ztpvj"><address id="ztpvj"><progress id="ztpvj"></progress></address></big>

          成都java開發培訓
          達內成都高升橋中心

          Java線程同步簡介

          • 時間:2018-09-17 10:41
          • 發布:成都Java培訓
          • 來源:成都達內

          一、方法介紹

          1、void wait()

          使得線程進入等待狀態,直到它被其他線程通過notify()或者notifyAll喚醒。該方法只能在同步方法(void synchronized methodName( args... ){ ... })或者 “同步塊內部“ (synchronized(object){ ... })被調用。如果當前線程不是鎖的持有者,該方法會拋出一個IllegalMonitorStateException異常。

          即如果鎖住的是object,那么你只能調用object的wait()方法。

          2、void notify()

          隨機選擇一個在該對象上調用wait方法的線程,解除其阻塞狀態。該方法只能在同步方法(void synchronized methodName( args... ){ ... })或者 “同步塊內部“ (synchronized(object){ ... })被調用。如果當前線程不是鎖的持有者,該方法會拋出一個IllegalMonitorStateException異常。

          3、void notifyAll()

          解除所有那些在該對象上調用wait方法的線程的阻塞狀態。該方法只能在同步方法(void synchronized methodName( args... ){ ... })或者 “同步塊內部“ (synchronized(object){ ... })被調用。如果當前線程不是鎖的持有者,該方法會拋出一個IllegalMonitorStateException異常。

          二、范例講解( 注意測試類A只能聲明為外部類,下面代碼在 class A 和 main方法 之間 省略了MainClass { ... } )

          1、“同步塊”測試

          (1)加synchronized(){}

          class A{}

          public static void main(String[] args) {

          A object = new A();

          System.out.println("Main Thread Id = " + Thread.currentThread().getId());

          synchronized (object) {

          try {

          System.out.println("This Thread Id = " + Thread.currentThread().getId());

          object.wait();

          } catch (InterruptedException e) {

          </span>e.printStackTrace();

          }

          }

          }

          輸出

          (2)不加synchronized(){}

          class A{}

          public static void main(String[] args) {

          A object = new A();

          System.out.println("Main Thread Id = " + Thread.currentThread().getId());

          //synchronized (object) {

          try {

          </span>System.out.println("This Thread Id = " + Thread.currentThread().getId());

          </span>object.wait();

          } catch (InterruptedException e) {

          </span>e.printStackTrace();

          }

          /

          上一篇:java世界學習地圖
          下一篇:dao、pojo及javabean
          • 關注微信公眾號

            回復關鍵字:視頻資料

            免費領取 達內課程視頻學習資料

          • 視頻學習QQ群

            添加QQ群:1143617948

            免費領取達內課程視頻學習資料

          Copyright ? 2018 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

          選擇城市和中心
          江西省

          貴州省

          廣西省

          海南省

          偷拍初高中女厕所视频,小草视频免费高清在线播放,国产日韩欧美不卡在线二区,亚洲中文字幕码在线电影