. package com.yange;
2.
3. import java.util.concurrent.Semaphore;
4. /**
5. *
6. *
7. */
8.
9. public class SemaphoreTest {
10. /*
11. * permits the initial number of permits available. This value may be negative,
12. in which case releases must occur before any acquires will be granted.
13. fair true if this semaphore will guarantee first-in first-out granting of
14. permits under contention, else false
15. */
16. static Semaphore semaphore = new Semaphore(5,true);
17. public static void main(String[] args) {
18. for(int i=0;i<100;i++){
19. new Thread(new Runnable() {
20.
20. @Override
21. public void run() {
22. test();
23. }
24. }).start();
25. }
27.
26. }
29.
27. public static void test(){
28. try {
29. //申请一个请求
30. semaphore.acquire();
31. } catch (InterruptedException e1) {
32. e1.printStackTrace();
33. }
34. System.out.println(Thread.currentThread().getName()+"进来了");
35. try {
36. Thread.sleep(1000);
37. } catch (InterruptedException e) {
38. e.printStackTrace();
39. }
40. System.out.println(Thread.currentThread().getName()+"走了");
41. //释放一个请求
42. semaphore.release();
43. }
44. }
. package com.yange;
2.
3. import java.u