首页 > 编程语言 > 详细

Java多线程的Semaphore

时间:2019-08-04 10:28:14      阅读:68      评论:0      收藏:0      [点我收藏+]

Semaphore 信号量, 在多线程应用中, 用来控制同时访问某个特定资源的操作数量, 或者同时执行某个指定操作的数量, 还可以用来实现某种资源池限制, 或者对容器施加边界. 简单地说, Semaphore就是synchronized的加强版, 可以控制线程的并发数量.

控制对某一方法并发的访问数量

public class DemoSemaphore {
    # 1表示同时只允许1个线程访问, 3则表示3个
    private Semaphore semaphore = new Semaphore(3);

    public void exec() {
        try {
            semaphore.acquire();
            long threadId = Thread.currentThread().getId();
            System.out.println(threadId + " acquired");
            long rand = (long)(Math.random() * 1000);
            Thread.sleep(rand);
            System.out.println(threadId + " end");
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            semaphore.release();
        }
    }

    public static void main(String[] args) {
        DemoSemaphore demo = new DemoSemaphore();
        for (int i = 0; i < 30; i++) {
            new Thread(demo::exec).start();
        }
    }
}

.

 

Java多线程的Semaphore

原文:https://www.cnblogs.com/milton/p/11296998.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!