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