kotlin 协程的信号量 Semaphore Api学习

760 阅读1分钟
//创建对象
// 第一个参数 可以使用的总的信号量 第二个参数 已经使用的信号量(todo 查找使用场景)
private val semaphore = Semaphore(1, 0)


1  acquire() 的使用
// 能拿到信号量,继续执行 拿不到阻塞
semaphore.acquire()
// 处理业务完毕,释放信号量
semaphore.release()

2 tryAcquire() 返回boolean
// 能拿到信号量,返回true,并在业务处理完之后调用release
// 拿不到信号量,返回false,不需要调用release,会出现异常

3 withPermit()
// 提供的简单api,走的是acquire的逻辑,自动release