文档章节

信号量semaphore的应用

yuanxq
 yuanxq
发布于 2016/03/04 17:47
字数 169
阅读 13
收藏 0
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;

public class SingleLock{
private Semaphore sem = new Semaphore(1);
    public boolean tryLock(){
        boolean rs = false;
        try{
            rs = sem.tryAcquire(1, 10, TimeUnit.SECONDS); //尝试获取,没有信号量时,不阻塞
        }catch(Exception e){
            e.printStackTrace();
        }
            return rs;
    }

    public boolean unlock(){
        sem.release(); //释放信号量
    }
}

public class Job{
    private SingleLock lock = new SingleLock();

    public void doPrint(){
        boolean rs = lock.tryLock();
        if(rs == false){
            System.out.print("Job doPrint is still running, return;");
            return;
        }
        System.out.print("Job doPrint is working.");
        lock.unlock();
    }
}


© 著作权归作者所有

共有 人打赏支持
上一篇: 诸葛天下面试
下一篇: 诸葛天下面试
yuanxq
粉丝 0
博文 2
码字总数 634
作品 0
高级程序员
私信 提问
浅谈dispatch_semaphore_t

在UNIX环境下,多线程同步的技术有、、、、等。在iOS平台上,可以使用做线程同步。 的原理类似于,与其相关的方法主要是: dispatchsemaphorecreate#### 创建一个新的信号量,参数value代表信...

foolishBoy
2017/04/11
0
0
Java Semaphore实现线程池任务调度

关于Semaphore举例 以一个停车场运作为例。为了简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然后放下车拦,剩下...

IamOkay
2016/08/13
233
0
JAVA多线程--信号量(Semaphore)

简介 信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。 一个计数信号量。从概念上讲,信号量维护了一...

cloud-coder
2015/01/01
0
4
(java多线程与并发)java并发库中的阻塞队列--BlockingQueue

1.简介 信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。 2.概念 Semaphore分为单值和多值两种,前者...

vshcxl
2016/11/28
27
0
【死磕Java并发】-----J.U.C之并发工具类:Semaphore

此篇博客所有源码均来自JDK 1.8 信号量Semaphore是一个控制访问多个共享资源的计数器,和CountDownLatch一样,其本质上是一个“共享锁”。 Semaphore,在API是这么介绍的: 一个计数信号量。...

chenssy
2017/05/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
今天
2
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
2
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
11
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部