欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java互斥鎖簡單實例

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

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

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

//沒有互斥鎖的情況(可以自己跑跑看運行結(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個線程讓結(jié)果更加容易觀測到
    MyThread[] threads = new MyThread[threadNum];
    for(int i=0;i<threads.length;i++) {
      threads[i] = new MyThread(ld);
      // 所有線程共用一個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個線程讓結(jié)果更加容易觀測到
    MyThread[] threads = new MyThread[threadNum];
    for(int i=0;i<threads.length;i++) {
      threads[i] = new MyThread(ld);
      // 所有線程共用一個LockDemo對象
      threads[i].start();
    }
  }
}
class MyThread extends Thread {
  LockDemo ld;
  public MyThread(LockDemo ld) {
    this.ld = ld;
  }
  public void run() {
    ld.increaseI();
  }
}

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

相關(guān)文章

  • Hadoop之NameNode Federation圖文詳解

    Hadoop之NameNode Federation圖文詳解

    今天小編就為大家分享一篇關(guān)于Hadoop之NameNode Federation圖文詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • JMeter導(dǎo)入自定義的Jar包的詳解教程

    JMeter導(dǎo)入自定義的Jar包的詳解教程

    這篇文章主要介紹了JMeter導(dǎo)入自定義的Jar包的詳解教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Java集合類中文介紹

    Java集合類中文介紹

    本文首先對Java集合類框架做了簡單說明,之后對主要類和為API做了介紹:Collection、List、Set、AbstractCollection、AbstractList、AbstractSet、Iterator、ListIterator。
    2013-11-11
  • Java中BigDecimal比較大小的3種方法(??compareTo()、??equals()??和??compareTo()??)

    Java中BigDecimal比較大小的3種方法(??compareTo()、??equals()??和??compar

    這篇文章主要給大家介紹了關(guān)于Java中BigDecimal比較大小的3種方法,方法分別是??compareTo()、??equals()??和??compareTo()??,在Java中使用BigDecimal類來進(jìn)行精確的數(shù)值計算,需要的朋友可以參考下
    2023-11-11
  • Springboot?引入?Redis?并配置序列化并封裝RedisTemplate?

    Springboot?引入?Redis?并配置序列化并封裝RedisTemplate?

    這篇文章主要介紹了Springboot?引入?Redis?并配置序列化并封裝RedisTemplate。文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Intellij?IDEA如何修改配置文件位置

    Intellij?IDEA如何修改配置文件位置

    這篇文章主要介紹了Intellij?IDEA--修改配置文件位置,文章末尾給大家介紹了Intellij?IDEA--宏的用法記錄操作過程,對此文感興趣的朋友跟隨小編一起看看吧
    2022-08-08
  • NoHttpResponseException異常解決優(yōu)化HttpClient配置以避免連接問題

    NoHttpResponseException異常解決優(yōu)化HttpClient配置以避免連接問題

    這篇文章主要為大家介紹了NoHttpResponseException異常解決,優(yōu)化HttpClient配置以避免連接問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 一文帶你學(xué)會Java事件機(jī)制

    一文帶你學(xué)會Java事件機(jī)制

    今天小編就為大家分享一篇關(guān)于Java事件機(jī)制的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-10-10
  • maven 打包時間戳問題

    maven 打包時間戳問題

    這篇文章主要介紹了maven 打包時間戳問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • SpringBoot使用validation做參數(shù)校驗說明

    SpringBoot使用validation做參數(shù)校驗說明

    這篇文章主要介紹了SpringBoot使用validation做參數(shù)校驗說明,首先通過添加hibernate-validator展開全文內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考與喜愛
    2022-04-04

最新評論