zoukankan      html  css  js  c++  java
  • Java--Semaphore控制并发线程数量

    package com;
    
    import java.util.concurrent.Semaphore;
    
    /**
     * Created by yangyu on 16/11/28.
     */
    
    /**
     * Semaphore控制并发线程数量
     *
     * 使用场景:
     * 当大批量的并发请求来到系统当中时,为了保证系统稳定,真正执行业务逻辑的线程其实数量有限;
     * 为了保证业务系统的稳定,不会被峰值请求给击垮,那么应该对执行业务逻辑的线程进行并发控制;
     * 而Semaphore就可以用于控制并发线程数量
     */
    public class TestSemaphore {
    
        private static Semaphore semaphore = new Semaphore(5);
    
        public static void main(String[] args) {
    
            /**
             * 先启动5个线程,将限流占满
             */
            for (int i = 0; i < 5; i++) {
                new Thread(()->{
                    try {
                        semaphore.acquire();
                        System.out.println(Thread.currentThread().getId()+"启动");
                        Thread.sleep(10*1000);
                        semaphore.release();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }).start();
            }
    
            /**
             * 只有当前面5个线程执行semaphore.release()释放以后,后续线程才能执行
             */
            for (int i = 0; i < 10; i++) {
                new Thread(()->{
                    try {
                        semaphore.acquire();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getId()+"后续线程");
                    semaphore.release();
                }).start();
            }
        }
    }
  • 相关阅读:
    sharepoint部署
    继承实体类出现传值时值不能保留
    面试经历
    sharepoint更换数据库链接
    asp.net c# 打开新页面或页面跳转
    sharepoint中配置工作流
    AD添加组织单位
    常用正则表达式
    删除多级非空目录
    C#实现对Word文件读写
  • 原文地址:https://www.cnblogs.com/eoss/p/6109051.html
Copyright © 2011-2022 走看看