網站首頁 編程語言 正文
目錄
什么是CountDownLatch?
一個示例看懂
思考這與join有什么1區別?
什么是CountDownLatch?
CountDownLatch是Java中的一個并發工具類,用于控制多個線程同時執行某個操作,在達到某個條件前等待,達到條件后再同時執行操作。
CountDownLatch中的計數器初始化為一個正整數,每當一個線程完成了自己的任務后,計數器的值就減1,直到計數器的值為0時,所有等待的線程才會被喚醒同時開始執行。
一個示例看懂
import java.util.concurrent.CountDownLatch;
public class Example {
public static void main(String[] args) {
final CountDownLatch latch = new CountDownLatch(2);
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
System.out.println("Thread 1 completed.");
latch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
System.out.println("Thread 2 completed.");
latch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
try {
latch.await();
System.out.println("All threads completed.");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
????????在這個示例中,我們創建了一個CountDownLatch對象,并將其初始化為2。然后我們創建了兩個線程,在每個線程中都執行了一些操作,在每個線程的內部調用了latch.countDown()方法來減少計數器的值。
????????最后,我們在主線程中調用latch.await()方法來等待計數器的值變為0,這樣所有的線程就可以同時執行其他的操作了。
最后輸出"All threads completed."。
思考這與join有什么1區別?
join的工作原理是:不停檢查thread是否存活,如果存活則讓當前線程永遠wait,直到thread線程終止,線程的this.notifyAll 就會被調用。
顯然join使用的場景肯定比CountDownLatch簡單,也就是說CountDownLatch更加的強大。
具體可看以下,不再贅述。
CountDownLatch理解一:與join的區別_countdownlatch和join_逐兔郎的博客-CSDN博客
原文鏈接:https://blog.csdn.net/qq_53679247/article/details/130872602
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-08-20 解決python遞歸函數及遞歸次數受到限制的問題_python
- 2023-12-23 mybatis的selectOne()方法使用記錄
- 2022-03-14 Springboot中遇到的問題——Failed to load ApplicationContex
- 2022-12-22 淺析Go語言中數組的這些細節_Golang
- 2022-08-22 Python3.9用pip安裝wordcloud庫失敗的解決過程_python
- 2022-07-07 python中列表對象pop()方法的使用說明_python
- 2022-12-07 python?yield迭代器詳解_python
- 2022-04-09 SpringBoot自定義validation注解校驗參數只能為指定的值
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支