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

Java互斥鎖簡單實(shí)例

 更新時(shí)間:2015年07月11日 10:10:56   作者:優(yōu)雅先生  
這篇文章主要介紹了Java互斥鎖,較為詳細(xì)的分析了java互斥鎖的概念與功能,并實(shí)例描述了java互斥鎖的原理與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了Java互斥鎖。分享給大家供大家參考。具體分析如下:

互斥鎖,常常用于多個(gè)線程訪問獨(dú)占式資源,比如多個(gè)線程同時(shí)寫一個(gè)文件,雖然互斥訪問方式不夠高效,但是對于一些應(yīng)用場景卻很有意義

//沒有互斥鎖的情況(可以自己跑跑看運(yùn)行結(jié)果):
public class LockDemo {
 
// private static Object lock = new Object();
// static確保只有一把鎖
  private int i = 0;
  public void increaseI() {
//   synchronized (lock) {
      for(int k=0;k<10;k++) { // 對i執(zhí)行10次增1操作
        i++;
      }
      System.out.println(Thread.currentThread().getName() + "線程,i現(xiàn)在的值:" + i);
//   }
  }
  public static void main(String[] args) {
    LockDemo ld = new LockDemo();
    int threadNum = 1000;
    // 選擇1000個(gè)線程讓結(jié)果更加容易觀測到
    MyThread[] threads = new MyThread[threadNum];
    for(int i=0;i<threads.length;i++) {
      threads[i] = new MyThread(ld);
      // 所有線程共用一個(gè)LockDemo對象
      threads[i].start();
    }
  }
}
class MyThread extends Thread {
  LockDemo ld;
   
  public MyThread(LockDemo ld) {
    this.ld = ld;
  }
  public void run() {
    ld.increaseI();
  }
}
//加上互斥鎖以后:
public class LockDemo {
  private static Object lock = new Object();
  // static確保只有一把鎖
  private int i = 0;
  public void increaseI() {
    synchronized (lock) {
      for(int k=0;k<10;k++) {
      // 對i執(zhí)行10次增1操作
        i++;
      }
      System.out.println(Thread.currentThread().getName() + "線程,i現(xiàn)在的值:" + i);
    }
  }
  public static void main(String[] args) {
    LockDemo ld = new LockDemo();
    int threadNum = 1000;
    // 選擇1000個(gè)線程讓結(jié)果更加容易觀測到
    MyThread[] threads = new MyThread[threadNum];
    for(int i=0;i<threads.length;i++) {
      threads[i] = new MyThread(ld);
      // 所有線程共用一個(gè)LockDemo對象
      threads[i].start();
    }
  }
}
class MyThread extends Thread {
  LockDemo ld;
  public MyThread(LockDemo ld) {
    this.ld = ld;
  }
  public void run() {
    ld.increaseI();
  }
}

希望本文所述對大家的java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Springboot使用test無法啟動(dòng)問題的解決

    Springboot使用test無法啟動(dòng)問題的解決

    這篇文章主要介紹了Springboot使用test無法啟動(dòng)問題的解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • springboot DTO字符字段與日期字段的轉(zhuǎn)換問題

    springboot DTO字符字段與日期字段的轉(zhuǎn)換問題

    這篇文章主要介紹了springboot DTO字符字段與日期字段的轉(zhuǎn)換問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot項(xiàng)目的測試類實(shí)例解析

    SpringBoot項(xiàng)目的測試類實(shí)例解析

    這篇文章主要介紹了SpringBoot項(xiàng)目的測試類實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • spring 或者spring boot 調(diào)整bean加載順序的方式

    spring 或者spring boot 調(diào)整bean加載順序的方式

    這篇文章主要介紹了spring 或者spring boot 調(diào)整bean加載順序的方式,本文通過實(shí)例代碼講解三種調(diào)整類加載順序的方式,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 詳解Java面向?qū)ο笾械睦^承

    詳解Java面向?qū)ο笾械睦^承

    這篇文章主要介紹了詳解Java面向?qū)ο笾械睦^承,繼承提高代碼的復(fù)用性:通過繼承,子類可以直接使用父類的屬性和方法,不需要重復(fù)定義,需要的朋友可以參考下
    2023-05-05
  • Java中的@Async異步功能詳解

    Java中的@Async異步功能詳解

    這篇文章主要介紹了Java中的@Async異步功能詳解,@Async注解,可以實(shí)現(xiàn)異步處理的功能,它可以有返回值,或者直接在新線程時(shí)并行執(zhí)行一個(gè)任務(wù),對于異步來說,它的執(zhí)行是有條件的,你需要把異步代碼塊放在單獨(dú)的類里,需要的朋友可以參考下
    2023-11-11
  • 解決SpringBoot application.yaml文件配置schema 無法執(zhí)行sql問題

    解決SpringBoot application.yaml文件配置schema 無法執(zhí)行sql問題

    這篇文章主要介紹了解決SpringBoot application.yaml文件配置schema 無法執(zhí)行sql問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 關(guān)于java.lang.NumberFormatException: null的問題及解決

    關(guān)于java.lang.NumberFormatException: null的問題及解決

    這篇文章主要介紹了關(guān)于java.lang.NumberFormatException: null的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • SpringBoot使用Validation包進(jìn)行輸入?yún)?shù)校驗(yàn)

    SpringBoot使用Validation包進(jìn)行輸入?yún)?shù)校驗(yàn)

    Spring Boot 自帶的 spring-boot-starter-validation 包支持以標(biāo)準(zhǔn)注解的方式進(jìn)行輸入?yún)?shù)校驗(yàn),本文即關(guān)注 spring-boot-starter-validation 包所涵蓋的標(biāo)準(zhǔn)注解的使用、校驗(yàn)異常的捕獲與展示、分組校驗(yàn)功能的使用,以及自定義校驗(yàn)器的使用,需要的朋友可以參考下
    2024-05-05
  • Java中的HashMap和Hashtable區(qū)別解析

    Java中的HashMap和Hashtable區(qū)別解析

    這篇文章主要介紹了Java中的HashMap和Hashtable區(qū)別解析,HashMap和Hashtable都實(shí)現(xiàn)了Map接口,但決定用哪一個(gè)之前先要弄清楚它們之間的區(qū)別,主要的區(qū)別有線程安全性、同步和速度,需要的朋友可以參考下
    2023-11-11

最新評論

汝阳县| 汝南县| 得荣县| 安泽县| 包头市| 峨边| 阿拉尔市| 龙川县| 运城市| 石狮市| 巨野县| 揭阳市| 仲巴县| 故城县| 苍南县| 徐闻县| 巢湖市| 固镇县| 长乐市| 张家口市| 白银市| 关岭| 汉中市| 老河口市| 阿城市| 那坡县| 莱西市| 长海县| 马边| 中山市| 斗六市| 佛山市| 渝北区| 谢通门县| 化隆| 霞浦县| 宝坻区| 全椒县| 会东县| 二手房| 乌鲁木齐市|