首页 > 其他分享 >juc 学习

juc 学习

时间:2023-11-24 23:46:00浏览次数:33  
标签:juc Thread err getName System 学习 println public

CyclicBarrier

应用场景是比如在做压力测试时,使用多少个用户并发,做集合点测试。

比如设置 100个用户并发,100个用户同时进行压测,只有100个用户压测完毕时,才能再发起下一波的压力测试。

 

package com.study.juc;

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;


public class CyclicBarrierDemo {

    public static void main(String[] args) throws BrokenBarrierException, InterruptedException, TimeoutException {
        CyclicBarrier cyclicBarrier=new CyclicBarrier(2,()->{
            System.err.println(  "集合完毕出发!");
        });
        for(int i=1;i<=3;i++){
            int tmp = i;
            new Thread(()->{
                    System.err.println(Thread.currentThread().getName() +"线程before:"+ tmp);
                try {
                    cyclicBarrier.await(2, TimeUnit.SECONDS);
                    System.err.println(Thread.currentThread().getName() +"线程after:"+ tmp);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            },"CyclicBarrier").start();
        }
    }
}

 

CountDownLatch

减法计数器。

package com.study.juc;


import java.util.concurrent.CountDownLatch;

public class CountDownLatchDemo {

    public static void main(String[] args) throws InterruptedException {
        CountDownLatch latch=new CountDownLatch(13);
        for(int i=1;i<=12;i++){
            new Thread(()->{

                System.err.println(Thread.currentThread().getName() +"before:" +latch.getCount());
                latch.countDown();
                System.err.println(Thread.currentThread().getName() +"after :" +latch.getCount());

            },String.valueOf(i)).start();
        }
        latch.await();
    }
}

 使用信号量

public class SemaphoreDemo {

public static void main(String[] args) {
Semaphore semaphore=new Semaphore(3);

Random random=new Random();

for(int i=1;i<=6;i++){
new Thread(()->{
try {
semaphore.acquire();
int second=random.nextInt(10);
System.err.println(Thread.currentThread().getName() +"时长"+second +"开始");
TimeUnit.SECONDS.sleep(second);
System.err.println(Thread.currentThread().getName()+"完成");
}
catch (InterruptedException ex){
ex.printStackTrace();
}
finally {
semaphore.release();
}
},"线程" +i).start();

}

}

}

 信号量的作用是:比如有三个车位,有6辆车,先进入三辆车,如果一辆车出来,后来的车可以进去,但始终只有三辆车同时停到车位。

标签:juc,Thread,err,getName,System,学习,println,public
From: https://www.cnblogs.com/yg_zhang/p/15957616.html

相关文章

  • Day02 学习键盘常用快捷键及常用Dos命令学习
    键盘快捷键​ 键盘快捷键:Ctrl篇:Ctrl+A:全部选中Ctrl+C:复制文件或者文档中选中的内容Ctrl+X:剪切文件或者在文档中剪切选中内容Ctrl+P:打印Ctrl+E:打开或关闭"搜索"侧边栏(各种搜索引擎可选)Ctrl+F:打开"查找"面板Ctrl+H:打开“历史”文档中可以执行替换操作Ctrl+R:刷新......
  • 20211128《信息安全系统设计与实现》第十三章学习笔记
    一、任务内容自学教材第13章,提交学习笔记(10分)1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:“请你以苏格......
  • 3-Hive学习路线-软件的基本操作
    2.3.软件的基本操作2.3.1.进入hive[root@localhost~]hive回车2.3.2.操作showdatabases;//显示所有数据库usedatabaseName;//切换到指定数据库showtables;//显示数据中所有表createtable.......
  • 深度学习模型训练并行问题
    并行这个概念一方面是是加快模型训练,一方面是解决显存不够的问题的并行策略数据并行(最常用的),即每张卡上都放一个完整的模型,主要用于单机多卡的数据并行。模型并行,将模型的不同部分进行手动的分割,然后分别放在不同的卡上。注意,模型要放在卡上不光是需要保存模型参数,因为模型训......
  • 机器学习matplotlib
    importmatplotlib.pyplotaspltimportrandom#创建一个整数序列x=range(60)#随机60个15到18的数y=[random.uniform(15,18)foriinx]plt.figure(figsize=(20,8),dpi=100)plt.plot(x,y)plt.show()这便是一个最基本的折线图,代码运行结果如下:frompylabimportmpl#......
  • 学习笔记11
    20211301学习笔记11教材知识点总结TCP/IP协议TCP:代表传输控制协议IP:代表互联网协议IPv4:32位IPv6:64位堆栈顶层:应用程序,用于登录远程主机ssh、用于交换电子邮件、用于web页面的http等应用程序需要可靠的数据传输网络中的数据流路径:IP主机和IP地址主......
  • 排列组合学习笔记
    加法原理有\(n\)类办法,\(a_i(1\lei\len)\)代表第\(i\)类方法的数目。那么共有\(S=a_1+a_2+\cdots+a_n\)种方法乘法原理分\(n\)个步骤,\(a_i(1\lei\len)\)代表第\(i\)个步骤的方法数目。那么共有\(S=a_1\timesa_2\times\cdots\timesa_n\)种方法排列数从\(n\)个......
  • stm32学习随笔23.11.24
    探索TIM2两个PWM输出视频:B站BV1vb4y1T72LMain.C主函数部分节选#include"stm32f10x.h"                 //Deviceheader#include"Delay.h"#include"OLED.h"#include"TestLED.h"#include"PWM.h"#include"KEY.h"#incl......
  • 2023-2024-1 20231320 《计算机基础与程序设计》第九周学习总结
    2023-2024-120231320《计算机基础与程序设计》第九周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2022-2023-1计算机基础与程序设计第九周作业)这个作业的目标<自学《计算机基础与......
  • 2023-2024-1 20211306 密码系统设计与实现课程学习笔记11
    20211306密码系统设计与实现课程学习笔记11任务详情自学教材第13章,提交学习笔记知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个......