zoukankan      html  css  js  c++  java
  • Java多线程的信号量

    Java的信号量主要的作用是控制线程对资源的访问例如我一个线程池里面有100个线程等待执行,但是我允许最多同时运行5个线程,这5个线程只有其中一个线程执行完毕后,在线程池中等待的线程才能进入开始执行,我们可以这样设计程序:

    /**
     * 该示例展示了如何使用信号量
     * @author Administrator
     *
     */
    public class MySemaphore {
    
        public static void main(String[] args) throws IOException, InterruptedException {
            final Semaphore semaphore = new Semaphore(5);
            ExecutorService exec = Executors.newCachedThreadPool();
            for (int i = 0; i < 20; i++) {
                final int num = i;
                Runnable task = new Runnable() {
                    @Override
                    public void run() {
                        try {
                            semaphore.acquire();
                            System.out.println("计算器:" + num + " 可用信号量:" + semaphore.availablePermits());
                            semaphore.release();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                };
                exec.submit(task);
            }
        }
    }
    View Code

  • 相关阅读:
    三 zookeeper集群搭建
    一 linux 基本操作
    linux x64 安装 node
    docker nginx/1.7.4
    搭建Portainer可视化界面
    Swarm搭建 Docker集群
    在 Centos7.4上安装docker
    js 处理json对象数据
    生产者消费者模式及其存在的问题
    多线程
  • 原文地址:https://www.cnblogs.com/stonefeng/p/5967767.html
Copyright © 2011-2022 走看看