多线程Runnable、CountDownLatch运行代码示例
Runnable 示例代码
CountDownLatch 示例代码
package com.doggy.doggy;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;/*** @desc 多线程示例* @author ashly* @date 2020/1/15 9:55**/
@Slf4j
public class ThreadExample {//创建2个线程用于处理任务private static final ExecutorService executor = Executors.newFixedThreadPool(2);public static void main(String[] args){int count = 10;//任务计数CountDownLatch latch = new CountDownLatch(count);System.out.println("提交任务");for (int i = 0; i < count; i++) {executor.submit(new DemoRunnable(i, latch));}//任务等待try {latch.await();//等待,当计数latch减到0时,所有线程并行执行} catch (InterruptedException e) {log.info("Thread Interrupted!");Thread.currentThread().interrupt();}System.out.println("执行完毕");}
}class DemoRunnable implements Runnable {int anInt;CountDownLatch latch;DemoRunnable(int anInt, CountDownLatch latch){this.anInt = anInt;this.latch = latch;}@Overridepublic void run() {if (anInt == 3 || anInt == 5 || anInt == 9){//模拟不同任务的处理时间不同try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("执行完第" + (anInt + 1) + "个任务,latch's count: " + latch.getCount() );latch.countDown();}
}
运行结果
提交任务
执行完第1个任务,latch’s count: 10
执行完第3个任务,latch’s count: 9
执行完第2个任务,latch’s count: 8
执行完第5个任务,latch’s count: 7
执行完第6个任务,latch’s count: 6
执行完第4个任务,latch’s count: 6
执行完第7个任务,latch’s count: 5
执行完第8个任务,latch’s count: 4
执行完第9个任务,latch’s count: 3
执行完第10个任务,latch’s count: 1
执行完毕
多线程Runnable、CountDownLatch运行代码示例相关推荐
- python运行代码示例_python程序样例
<Python和HDF 5大数据应用>--2.2 设置 本节书摘来自异步社区<Python和HDF 5大数据应用>一书中的第2章,第2.2节,作者[美]Andrew Colle ...
- 深入多线程九:守护线程(代码示例)
在学习Java的道路上,是否路过多线程时总让你很迷惘:很不巧,我也是,而使我们感到很迷惘主要原因都源于没有对概念的深深的理解和实践.所以我决定漫步Java多线程,同你一起会会多线程. 深入多线程系列 ...
- 多线程(线程概念、代码示例)
进程和线程 说起进程,就必须提一下程序,程序是指令和数据的有序集合,是一个静态的概念 进程是执行程序的一次执行过程,第一个动态的概念,是系统资源分配的单位 在一个进程中包含若干个线程,线程是独立的执行 ...
- python爬虫之多线程、多进程+代码示例
python爬虫之多线程.多进程 使用多进程.多线程编写爬虫的代码能有效的提高爬虫爬取目标网站的效率. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪 ...
- java死锁业务场景_【深入浅出多线程系列十二】:什么是死锁?(场景+代码示例)...
在学习Java的道路上,是否路过多线程时总让你很迷惘:很不巧,我也是,而使我们感到很迷惘主要原因都源于没有对概念的深深的理解和实践.所以我决定漫步Java多线程,同你一起会会多线程. 多线程系列 多线 ...
- R语言使用tryCatch函数调试R代码实战:tryCatch函数运行正常R代码、tryCatch函数运行有错误(error)的R代码示例/tryCatch函数运行有警告(warning)的R代码示例
R语言使用tryCatch函数调试R代码实战:tryCatch函数运行正常R代码.tryCatch函数运行有错误(error)的R代码示例/tryCatch函数运行有警告(warning)的R代码示例 ...
- C++ Openssl AES GCM 128bits代码示例,可wins10的visual studio 2017 中直接运行
C++ Openssl AES GCM 128bits代码示例,可wins直接运行 使用vcpkg安装64bits的openssl,本人当前的openssl为openssl-1.1.1d版本,wins ...
- 【Vue】Vue入门 -(本地篇+网络篇)代码示例及运行效果
一.Vue 可参考:Vue官方文档 Vue 将 DOM 元素看作是对象,可以将元素与Vue实例绑定,实现通过操作数据改变元素内容.不需要用 jQuery 手写各种各样的选择器了. 二.本地篇:Vue基 ...
- JavaScript组件之JQuery(A~Z)教程(基于Asp.net运行环境)[示例代码下载](一)
(一).概述 现在有好多比较优秀的客户端脚本语言组件, 如: Prototype.YUI.jQuery.mootools.Bindows, Scriptaculous, FCKEditor 等, 都非 ...
最新文章
- 个人开发者即时到账收款方案 BufPay.com
- 互联网造车如火如荼,我们错怪贾跃亭了? | 圆桌脱口秀
- OC--有这么一个 整数 123456789,如何将这个整数的每一位数,从末位开始依次放入数组中,并遍历 倒序输出字符串...
- JavaScript 数组拼接打印_JavaScript 数组方法
- 【Linux 内核】Linux 内核源码目录说明 ② ( drivers 目录 | fs 目录 | include 目录 | init 目录 | ipc 目录 | kernel 目录 )
- MapReduce实现Apriori算法
- pstools套件在渗透中的应用详解
- [转]SqlServer2005 各版本区别
- 浅谈javascript继承【读javascript设计模式第四章节继承有感】
- mysql 5.5 主从同步问题_MySQL 5.5 主从复制异步、半同步以及注意事项详解
- github的应用详解
- C#中哈希表(HashTable)的用法详解
- javascript鼠标拖拽的那些事情
- PE学习.动手写PE.见缝插针
- HID API for Linux, Mac OS X, and Windows
- Pygame简易版2048小游戏:超详细解说,看完还不会可以剁手了(附完整源码)
- 阿兹尔海默症生物标志物(姑且叫标志物)的一些总结
- css实现一个正方形
- batchnomal_Linux Kernel 排程機制介紹 ? Loda's blog
- 在地产行业做安全?也许你该换个专业的企业级DNS
热门文章
- Automatic Optic Disc Detection in OCT Slices via Low-Rank Reconstruction
- 轻量级Typecho极简主题——Ltns【好久不见】
- 入门用C++求两个整数的和差商积余
- 基于HyperLPR的车牌识别(二)
- [从头读历史] 第272节 诗经 齐风
- 手机登录群晖出现ssl证书不可信_群晖Synology安装SSL证书
- syslog介绍(二):Linux下syslog基本配置
- java获取当前时间前5min的时间
- 《惢客创业日记》2021.01.09(周六)坏方案好过没有方案
- Java中字符串转整型和整型转字符串