Semaphore(信号量) 的使用总结

2019-08-01  本文已影响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 使用简单, 在处理并发 , 网络的时候, 经常可能用到,在使用时注意计算好许可值,同时,执行完之后记得释放许可.

上一篇 下一篇

猜你喜欢

热点阅读