美文网首页练习题
控制某个方法允许并发访问线程个数

控制某个方法允许并发访问线程个数

作者: 老奶猹 | 来源:发表于2020-07-11 10:33 被阅读0次
    class  
    {
        //声明一个semaphore对象
        static Semaphore semaphore = new Semaphore(5,true);
        public static void main(String[] args) 
        {
            for(int i=0;i<100;i++){
                 new Thread(new Runnable (){
                     @Override
                         public void run(){
                           test();
                     }
                 }).start();
            }
    }
    
          public static void test(){
            //申请一个请求
            try
            {
                semaphore.acquire();
            }
            catch (InterruptedException e1)
            {
                e1.printStackTrace();
            }
    
            try
            {
                Thread.sleep(1000);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
    
            //释放一个请求
            semaphore.release();
          }
    }
    
    

    可以使用Semaphore控制,构造函数创建了一个Semaphore对象,并且初始化了5个信号。这样的效果是控件 test 方法最多只能有 5 个线程并发访问,对于 5 个线程时就排队等待,走一个来一下。请求一个信号(消费一个信号),如果信号被用完了则等待,释放一个信号,释放的信号新的线程就可以使用了。

    相关文章

      网友评论

        本文标题:控制某个方法允许并发访问线程个数

        本文链接:https://www.haomeiwen.com/subject/qvibcktx.html