CountDownLatch 计算器(具有回调功能)
final CountDownLatch cdl = new CountDownLatch(1);
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
cdl.countDown();
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
cdl.await(10, TimeUnit.SECONDS);
思路:
CountDownLatch 通过 await 方法 阻塞线程,countDown方法每执行一次 CountDownLatch 值减1,直到 CountDownLatch 值为0,阻塞线程被唤醒。通过CountDownLatch这种 特性 来完成一些回调的功能。
@初始化默认赋值 1
@CountDownLatch 通过 await 方法 永久阻塞线程,直到值为0,会 通过 带时间时效性的阻塞线程,即当时间时效性内 ,线程阻塞,时间到期,阻塞线程 自动唤醒。这个类似于列队带时间参数的插入和出列那2个方法。
@上图中 在10s被被阻塞,10s内 只要CountDownLatch值为0,被阻塞的线程立即 唤醒,开始继续向下执行,否则只能继续阻塞,直到10s到期后阻塞线程也被自动唤醒。
CountDownLatch 计算器(具有回调功能)的更多相关文章
- UITextField增加textDidChange回调功能
在使用UITextField来判断登陆按钮状态时只有 shouldChangeCharactersInRange函数,是在文件还没有改变前就调用了,而不是在改变后调用,要想实现改变后调用的功能,导致登 ...
- 利用function和bind实现回调功能
介绍一种利用function和bind来实现回调的功能. C++参考手册中对function的介绍: std::function的实例能存储.复制及调用任何可调用的目标,包括:函数.lambda表达式 ...
- Java借助CountDownLatch完成异步回调
public class AsyncDemo { private static void doSomeTask() { System.out.println("Hello World&quo ...
- java代码-----计算器,界面+功能+boolean
总结:还是那个不懂代码放在哪里好?不知道怎么定义一些关键性变量.比如boolean 型的. package com.sads; import java.awt.BorderLayout; import ...
- Java代码实现计算器加减乘除简易功能
package test; import javax.swing.; import java.awt.; import java.awt.event.KeyAdapter; import java.a ...
- 原生JS表格行拖动排序,添加了回调功能
function tableDnD(el, callback) { if (typeof (el) == "string") { el = document.getElementB ...
- 24、配置Oracle下sqlplus历史命令的回调功能
24.1.前言: 1.在oracle服务器上使用默认的sqlplus写sql命令时,如果写错了一个字母需要修改时,是无法通过 退格键消除错误的字母的,只能另起一行,重新写sql语句,而且也不能通过键盘 ...
- 50行代码实现python计算器主要功能
实现功能:计算带有括号和四则运算的式子 3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4) 基本思路:使用正则表达式提取出每一层 ...
- JAVA回调机制(CallBack)详解
序言 最近学习java,接触到了回调机制(CallBack).初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯的像是给CallBack做了一个定义.当然了,我在理解了回 ...
随机推荐
- shiro框架总结
一.概念 shiro是一个安全框架,主要可以帮助我们解决程序开发中认证和授权的问题.基于拦截器做的权限系统,权限控制的粒度有限,为了方便各种各样的常用的权限管理需求的实现,,我们有必要使用比较好的安全 ...
- 【简介】OpenOCD 由jtag操作到parport driver流程
1. 定义 jtag_command_type 在 OpenOCD 中,JTag 命令在枚举 jtag_command_type 中定义,定义如下: /** * The type of the @c ...
- Aleax prize (开放域聊天系统比赛)2018冠军论文阅读笔记
Abstract Gunrock是一种社交机器人,旨在让用户参与开放域的对话.我们使用大规模的用户交互数据来迭代地改进了我们的机器人,使其更具能力和人性化.在2018年Alexa奖的半决赛期间,我们的 ...
- git的cd命令
这个命令是进入某个文件夹的命令.进入文件夹后可以对文件夹中的文件进行一系列操作.
- 大O 表示法
大O表示法 指出了算法有多快.例如,假设列表包含n个元素.简单查找需要检查每个元素,因此需要执行n次操作.使用大O表示法,这个运行时间为O(n).单位秒呢?没有——大O表示法指的并非以秒为单位的速度. ...
- Jmeter 注册多个用户 之 CSV Data set Config
1. 打开Jmeter,新建一个测试计划 > 新建线程组> 创建一个Http 请求 2. 创建一个信息头管理器 > content-Type application/json; ...
- nginx 报 502 bad gateway 分析解决
出现nginx 502 bad gateway 问题,先从nginx端日志入手,分析排查原因. 1.排查问题 首先需要打开nginx错误日志. 编辑nginx.conf,默认路径在/usr/local ...
- java单元/集成测试中使用Testcontainers
1.Testcontainers介绍: Testcontainers是一个Java库,它支持JUnit测试,提供公共数据库.SeleniumWeb浏览器或任何可以在Docker容器中运行的轻量级.一次 ...
- python学习第四节 迭代器 生成器
1:什么是迭代 可以直接作用于for循环的对象统称为可迭代对象(Iterable). 可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator). 所有的Iterable均可以通 ...
- Python常用模块之模块的使用
一 模块介绍 1.什么是模块? #常见的场景:一个模块就是一个包含了一组功能的python文件,比如spam.py,模块名为spam,可以通过import spam使用. #在python中,模块 ...