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

Java synchronized關(guān)鍵字使用方式及特性解析

 更新時(shí)間:2019年12月17日 15:00:04   作者:指尖,寫不盡  
這篇文章主要介紹了Java synchronized關(guān)鍵字使用方式及特性解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Java synchronized關(guān)鍵字使用方式及特性解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

synchronized 關(guān)鍵字是實(shí)現(xiàn)鎖的一種方式,是在jvm層面實(shí)現(xiàn)的非公平鎖,以下是使用synchronized的四種方式

synchronized 特性:

1.非公平鎖

2.可重入性

1.作用在方法上,保證了訪問同一個(gè)對象的同一個(gè)方法的線程同步

public synchronized void testFun(String str){
  for(int i=0;i<15;i++){
    System.out.println(str+",執(zhí)行中...");
  }
}

2.對象加鎖,保證同時(shí)訪問同一個(gè)對象的線程同步

public void testObject(String str){
  synchronized (this){
    for(int i=0; i<15;i++){
      System.out.println(str+",執(zhí)行中");
    }
  }
}

1,2 兩種加鎖方式在表現(xiàn)形式上是相同的

public static void main(String[] args){
  ExecutorService executorService = Executors.newCachedThreadPool();

  SynchronizeTest1 synchronizeTest1 = new SynchronizeTest1();
  executorService.execute(new Runnable() {
    @Override
    public void run() {
      synchronizeTest1.testObject("線程1");
    }
  });

  executorService.execute(new Runnable() {
    @Override
    public void run() {
      synchronizeTest1.testObject("線程2");
    }
  });
}

3.作用在類上

public static void testClass(String str){
  synchronized (SynchronizeTest2.class){
    for(int i=0 ;i<15;i++){
      System.out.println(str+",執(zhí)行中");
    }
  }
}

4.作用在靜態(tài)方法上

public synchronized static void testStaticFun(String str){
  for(int i=0;i<15;i++){
    System.out.println(str+",執(zhí)行中");
  }
}

3,4 在表現(xiàn)形式上是一樣的

public static void main(String[] args){
  ExecutorService executorService = Executors.newCachedThreadPool();

  executorService.execute(new Runnable() {
    @Override
    public void run() {
      testClass("線程1"); //可以替換為testStaticFun 方法
    }
  });

  executorService.execute(new Runnable() {
    @Override
    public void run() {
      testClass("線程2"); //可以替換為testStaticFun 方法
    }
  });

  executorService.shutdown();

}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

边坝县| 靖西县| 土默特左旗| 孟津县| 汉源县| 琼结县| 广宗县| 平安县| 杂多县| 邹平县| 台中县| 安阳县| 来安县| 虞城县| 宣化县| 锡林浩特市| 崇文区| 类乌齐县| 家居| 广州市| 文昌市| 普安县| 巨鹿县| 鸡东县| 泽普县| 科尔| 梅河口市| 辽阳市| 新干县| 孟津县| 大兴区| 阿尔山市| 米林县| 安国市| 黄陵县| 宣威市| 淳安县| 吴忠市| 甘南县| 灵丘县| 大宁县|