美文网首页
Semaphore(信号量) 的使用总结

Semaphore(信号量) 的使用总结

作者: 思考者_小徐 | 来源:发表于2019-08-01 21:35 被阅读0次

Semaphore的定义

Semaphore管理着一组许可(permit),可以设置许可数量,操作时首先要获取到许可,才能进行操作,操作完成后需要释放许可。如果没有获取许可,则阻塞到有许可被释放

作用

可以用来控制同时访问某个特定资源的操作数量,或者某个操作的数量。在并发和多线程的时候可能会用到

使用

举个列子

    //例子主要代码
      for (int i = 0; i < 10; i++) {
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            test();
                        }
                    }).start();
                }

  public void test() {
        try {
            semaphore.acquire();
            Log.d(TAG, "test() ===========>: " + Thread.currentThread().getName() + "进入了");
            Thread.sleep(1000);
            Log.d(TAG, "test() ===========>: " + Thread.currentThread().getName() + "执行了..........");
            semaphore.release();
            Log.d(TAG, "test() ===========>: " + Thread.currentThread().getName() + "退出.....");

        } catch (InterruptedException e) {
            e.printStackTrace();
        }


执行结果

总结

Semaphore 使用简单, 在处理并发 , 网络的时候, 经常可能用到,在使用时注意计算好许可值,同时,执行完之后记得释放许可.

相关文章

网友评论

      本文标题:Semaphore(信号量) 的使用总结

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