并发 04(Callable,CountDownLatch)详细讲解

news2024/11/20 2:22:49

并发

Callable

1  可以返回值

2可以抛出异常

泛型指的是返回值的类型

public class Send {
    public static void main(String[] args) {
        //怎么启动Callable
        //new Thread().start();
        Aaa thread=new Aaa();
        FutureTask futureTask=new FutureTask(thread);
        new Thread(futureTask,"name").start();

    }
}
class Aaa implements Callable<String> {

    @Override
    public String call() throws Exception {
        System.out.println("sssss");
        return "ssss";
    }
}

CountDownLatch

value(of)返回本身的值

每次有线程调用countDown()数量-1,假设计数器变为0,countDownLatch.await()就会被唤醒,继续执行! 

public class Send {
    public static void main(String[] args) throws InterruptedException {
        //倒计时
        CountDownLatch count=new CountDownLatch(6);
        for (int i = 0; i < 6; i++) {
            new Thread(()->{
                System.out.println(Thread.currentThread().getName()+"GO out");
                count.countDown();//数量-1
            },String.valueOf(i)).start();

        }count.await();//等待计数器归零然后在向下执行

    }
}

CyclicBarrier

public class Send {
    public static void main(String[] args) {
        CyclicBarrier cyclicBarrier=new CyclicBarrier(7,()->{
            System.out.println("召唤神龙");
        });
        for (int i = 0; i <7; i++) {
            final  int temp =i;
            //lambda能操作i吗  线程里只能通过final类型的的变量操作i
            new Thread(()->{
                System.out.println(Thread.currentThread().getName()+"收集了"+temp);
                try {
                    cyclicBarrier.await();//等待
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                } catch (BrokenBarrierException e) {
                    throw new RuntimeException(e);
                }
            }).start();
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/945823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这款自研RedCap网关终端,获评优秀!

近日&#xff0c;由通信世界全媒体主办的“5GRedCap技术与物联网应用创新研讨会”在北京举办。作为中国电信5GInside合作计划的重要成果&#xff0c;天翼物联自主研发的“RedCap网关终端CTW-GW-01”产品获“5GRedCap优秀产品和解决方案”。此次会议&#xff0c;天翼物联行业总监…

pyqt5 QuickStart

在使用pyqt5之前&#xff0c;建议下载一个Anaconda环境&#xff0c;这样下载python包更方便&#xff0c;本篇文章是建立在已经安装好Anaconda的情况下使用的。IDE就是标准的PyCharm了。 一、pyqt包的安装 python终端执行下面两个安装命令&#xff1a; pip install PyQt5 pip …

HTTP:http上传文件的原理及java处理方法的介绍

为了说明原理&#xff0c;以下提供一个可以上传多个文件的例子&#xff0c;html页面代码如下&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>http upload file</title> </head> <body>…

LeetCode56.合并区间

这道题我想了一会儿&#xff0c;实在想不到比较好的算法&#xff0c;只能硬着头皮写了&#xff0c;然后不断的debug&#xff0c;经过我不懈的努力&#xff0c;最后还是AC&#xff0c;不过效率确实低。 我就是按照最直接的方法来&#xff0c;先把intervals数组按照第一个数star…

gRPC + Spring Boot 编程教程 - piot

在本文中&#xff0c;您将学习如何实现通过 gRPC 通信的 Spring Boot 应用程序。gRPC 是一个现代开源远程过程调用 (RPC) 框架&#xff0c;可以在任何环境中运行。默认情况下&#xff0c;它使用 Google 的 Protocol Buffer 来序列化和反序列化结构化数据。当然&#xff0c;我们…

supervisorctl(-jar)启动配置设置NACOS不同命名空间

背景 由于需要在上海服务器上面配置B测试环境&#xff0c;原本上面已有A测试环境&#xff0c;固需要将两套权限系统分开 可以使用不同的命名空间来隔离启动服务 注&#xff1a;本文章均不涉及公司机密 1、新建命名空间 命名空间默认会有一个public&#xff0c;并且不能删除&a…

「Linux」使用VS Code远程连接Linux

一、VS Code简介 1.VS Code是什么&#xff1f; Visual Studio Code&#xff08;简称“VS Code”&#xff09;是微软公司的一个运行可以于 Mac OS、Windows 和 Linux之上的源代码编辑器。简单地说VS Code是一个编辑器&#xff0c;用来写代码。是一个基于插件的软件。 2.使用VSCo…

C++中的虚函数

一、虚函数 &#xff08;类继承中的一种函数&#xff09; 概念 概念 被virtual修饰的函数叫做虚函数。 为什么说虚函数是类继承中的一种函数呢&#xff1f; 因为虚函数的作用确实主要是在类的继承中体现的&#xff08;即派生类和基类&#xff09; 虚函数的作用就是当基类和派生…

Verilog基础:巴科斯范式(BNF)

相关阅读 Verilog基础专栏https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 由于Verilog HDL标准中对语法的描述使用了Backus Naur Form&#xff08;BNF&#xff09;。本文将对其中的约定进行描述。 小写单词&#xff0c;其中一些包含…

安防监控/视频汇聚平台EasyCVR调用rtsp地址返回的IP不正确是什么原因?

安防监控/云存储/磁盘阵列存储/视频汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RT…

【记录】USSOCOM Urban3D 数据集读取与处理

Urban3D数据集内容简介 Urban3D数据集图像为正摄RGB影像&#xff0c;分辨率为50cm。 从SpaceNet上使用aws下载数据&#xff0c;文件夹结构为&#xff1a; |- 01-Provisional_Train|- GT|- GT中包含GTC&#xff0c;GTI&#xff0c;GTL.tif文件&#xff0c;GTL为ground truth b…

Linux学习之RAID

基础概念 RAID&#xff0c;英文全称为Redundant Arrays of Independent Drives&#xff0c;RAID&#xff0c;中文称为独立冗余磁盘阵列&#xff0c;这项技术把多个硬盘设备组合成一个容量更大的、安全性更好的磁盘阵列&#xff0c;把数据切割成许多区段分别放在不同的物理磁盘…

产品经理NPDP考什么?

一、准备阶段 敲黑板1&#xff1a;考试共200道单选&#xff0c;满分200&#xff0c;手填涂卡&#xff0c;150分通过。考试费3200。条件&#xff1a;2年以上工作经验。 敲黑板2&#xff0c;敲三下&#xff1a;备考宝典《产品经理 认证(NPDP)知识体系指南》——红宝书。 二、精…

C语言——程序执行的三大流程

顺序 : 从上向下&#xff0c; 顺序执行代码分支 : 根据条件判断&#xff0c; 决定执行代码的分支循环 : 让特定代码重复的执行

[FlareOn6]Snake 题解

这是是一个后缀为.nes的文件&#xff0c;NES&#xff08;Nintendo Entertainment System&#xff0c;任天堂娱乐系统&#xff09; 找到一个工具FCEUX可以打开和调试 打开十六进制编辑器观察数值的变化 发现0x25处记录了记录了吃掉苹果的个数 在这个地方打一个硬件断点 运行一…

新手入门吉他是要越贵越好吗?2023年最全面吉他选购指南,十大初学者吉他品牌推荐!【建议收藏】

全文10000字&#xff0c;本人亲测整理了一个多星期的成果&#xff0c;对比了市面上十多个吉他品牌、近50款初学者入门/进阶吉他的选材参数和销售数据&#xff0c;最终整理出的精华版&#xff0c;每个人都可以根据自己的预算找到合适的入门吉他产品。未经授权不得转载、引用、洗…

Python学习笔记:Requests库安装、通过url下载文件

1.下载安装requests库 在pipy或者github下载&#xff0c;通常是个zip&#xff0c;解压缩后在路径输入cmd&#xff0c;并运行以下代码 Python setup.py install 安装完成后&#xff0c;输入python再输入import requests得到可以判断时候完成安装 2.通过url下载文件 使用的是u…

谷歌浏览器调试技巧

一、概述 记录谷歌浏览器实用的调试技巧。 二、详解 技巧1&#xff1a;打开F12调试工具的前提下按下Ctrl Shift P 如下图所示&#xff0c;按下组合键&#xff0c;可打开命令面板。 技巧2&#xff1a;调试工具的Element面板下&#xff0c;按照Alt 鼠标左键可以将目标节点全部…

图解SQL查询之having

在 SQL 中&#xff0c;having 在分组聚合后进行条件筛选&#xff0c;保留满足特定条件的分组。与 where 的区别在于 where 在分组聚合前进行过滤。 以下是用到的表 例如要求出班级总年龄大于17的班级是哪些 注&#xff1a; 数据库服务器会自启 only_full_group_by 模式&#…

【LeetCode-中等题】98. 验证二叉搜索树

文章目录 题目方法一&#xff1a;BFS 层序遍历方法二&#xff1a; 题目 方法一&#xff1a;BFS 层序遍历 利用层序遍历 拿到每一个节点 并且给每一个结点配备一个最大值和最小值的队列 只要节点在最大值和最小值之间就满足二叉搜索树的条件 public boolean isValidBST(TreeNo…