(2)Semaphore构造方法permits参数作用

使同一时间内最多只有1个线程可以执行accquire()和release()之间的代码,应为只有1个许可

其实还可以传入>1的许可,代表同一时间内,最多允许x个线程可以执行acquire()和release()之间的代码.

使用代码new Semaphore(2)来实例化该类同一时间内最多允许2个线程执行

(2)Semaphore构造方法permits参数作用_第1张图片

创建三个线程类:

(2)Semaphore构造方法permits参数作用_第2张图片


(2)Semaphore构造方法permits参数作用_第3张图片


(2)Semaphore构造方法permits参数作用_第4张图片

创建运行类:


(2)Semaphore构造方法permits参数作用_第5张图片

大家可以看到:同一个时间只允许两个线程运行:


(2)Semaphore构造方法permits参数作用_第6张图片

另外需要说明下:

对Semaphore类的构造方法传递的参数如果permits值如果大于1,该类并不能保证线程安全,应为还是有可能会出现多个线程共同访问实例变量,导致出现脏数据的情况。

你可能感兴趣的:((2)Semaphore构造方法permits参数作用)