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

  • 相关阅读:
    凯撒密文的破解编程实现
    微软ping命令的源代码
    从编程到入侵
    永远的后门
    永远的后门
    奇妙的Base64编码
    用端口截听实现隐藏嗅探与攻击(二)
    奇妙的Base64编码
    Liferea 1.1.2
    Equinox Desktop Environment 1.1
  • 原文地址:https://www.cnblogs.com/stonefeng/p/5967767.html
Copyright © 2011-2022 走看看