AQS同步组件中的Semaphore(信号量)如何解析及案例分析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1537个文字,预计阅读时间需要7分钟。
Semaphore是一种线程同步的辅助类,可以维护当前访问自身的线程数,并提供同步机制。使用Semaphore可以控制并发访问资源的线程数量。例如,排队购票的情况,Semaphore可以限制同时购票的线程数量。
@[toc]
基本概念
Semaphore也是一个线程同步的辅助类,可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以控制并发访问资源的线程个数。例如排队买票的情况,如果只有三个窗口,那么同一时间最多也只能有三个人买票。第四个人来了之后就必须在后面等着,只有其他人买好了,才可以去相应的窗口进行买票 。
作用和使用场景
- 用于保证同一时间并发访问线程的数目。
- 信号量在操作系统中是很重要的概念,Java并发库里的Semaphore就可以很轻松的完成类似操作系统信号量的控制。Semaphore可以很容易控制系统中某个资源被同时访问的线程个数。
- 在数据结构中我们学过链表,链表正常是可以保存无限个节点的,而Semaphore可以实现有限大小的列表。
使用场景:仅能提供有限访问的资源。比如数据库连接。
源码分析
构造函数
/** *接受一个整型的数字,表示可用的许可证数量。Semaphore(10)表*示允许10个线程获取许可证, *也就是最大并发数是10。本文共计1537个文字,预计阅读时间需要7分钟。
Semaphore是一种线程同步的辅助类,可以维护当前访问自身的线程数,并提供同步机制。使用Semaphore可以控制并发访问资源的线程数量。例如,排队购票的情况,Semaphore可以限制同时购票的线程数量。
@[toc]
基本概念
Semaphore也是一个线程同步的辅助类,可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以控制并发访问资源的线程个数。例如排队买票的情况,如果只有三个窗口,那么同一时间最多也只能有三个人买票。第四个人来了之后就必须在后面等着,只有其他人买好了,才可以去相应的窗口进行买票 。
作用和使用场景
- 用于保证同一时间并发访问线程的数目。
- 信号量在操作系统中是很重要的概念,Java并发库里的Semaphore就可以很轻松的完成类似操作系统信号量的控制。Semaphore可以很容易控制系统中某个资源被同时访问的线程个数。
- 在数据结构中我们学过链表,链表正常是可以保存无限个节点的,而Semaphore可以实现有限大小的列表。
使用场景:仅能提供有限访问的资源。比如数据库连接。

