博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用辅助类Semaphore信号量
阅读量:3960 次
发布时间:2019-05-24

本文共 916 字,大约阅读时间需要 3 分钟。

在这里插入图片描述

package com.kuang.add;import java.util.concurrent.Semaphore;import java.util.concurrent.TimeUnit;public class SemaphoreDemo {
public static void main(String[] args) {
// 线程数量:停车位! 限流! Semaphore semaphore = new Semaphore(3);//初始有三个信号量 for (int i = 1; i <=6 ; i++) {
new Thread(()->{
// acquire() 得到 try {
semaphore.acquire();//获取信号量 有就获取,获取后信号量减一,没有信号量了线程就在这里等待,直到有信号量了就会被唤醒 System.out.println(Thread.currentThread().getName()+"抢到车位"); TimeUnit.SECONDS.sleep(2); System.out.println(Thread.currentThread().getName()+"离开车位"); } catch (InterruptedException e) {
e.printStackTrace(); } finally {
//信号量的释放 信号量的数目加一 并唤醒等待的线程 semaphore.release(); // release() 释放 } },String.valueOf(i)).start(); } }}

在这里插入图片描述

semaphore.acquire()

当无法获取信号量了 该线程会在这里等待 直到可以获取信号量了

semaphore.release();

释放,会将当前的信号量释放 + 1,然后唤醒等待的线程!

作用: 多个共享资源互斥的使用!并发限流,控制最大的线程数!

转载地址:http://iohzi.baihongyu.com/

你可能感兴趣的文章
Python之操作XML文件
查看>>
eclipse+ADT 进行android应用签名详解
查看>>
Robotium只有apk文件例如Music.apk
查看>>
UI自动化测试框架对比(二)
查看>>
Selenium-webdriver系列教程(9)——如何操作select下拉框
查看>>
Selenium-webdriver系列教程(10)——如何智能的等待页面加载完成
查看>>
Robotium测试NotePad(一)
查看>>
Robotium测试NotePad(二) //测试添加文本
查看>>
Robotium测试NotePad(二) //测试删除文本
查看>>
Robotium只有apk文件时进行测试
查看>>
Robotium测试NotePad(三) //测试修改文本
查看>>
怎样有效降低测试的轮次?
查看>>
功能测试用例设计策略
查看>>
真正优秀的质量工程师,都有这些特质
查看>>
JIRA与confluence的用户整合
查看>>
Robotium测试——API介绍
查看>>
autoit3——打开窗口
查看>>
autoit3 ie.au3 函数之——ControlClick
查看>>
autoit3 ie.au3 函数之——_FileWriteLog日志
查看>>
转:Android自动化压力测试工具Monkey——测试例子
查看>>