信号量

    1. public static void main(String[] args) {
    2. // 信号量
    3. Semaphore semaphore = new Semaphore(5);
    4. //定义只能有五个线程进行操作 如果多的只能等待里面有线程执行完毕后 才能进去执行
    5. for (int i = 0; i < 10; i++) {
    6. new Pay(semaphore).start();
    7. }
    8. }
    9. static class Pay extends Thread {
    10. Semaphore semaphore;
    11. public Pay(Semaphore semaphore) {
    12. this.semaphore = semaphore;
    13. }
    14. @Override
    15. public void run() {
    16. try {
    17. // 申请资源
    18. semaphore.acquire();
    19. // =========================
    20. System.out.println("[" + Thread.currentThread().getName() + " ] 正在进行支付");
    21. Thread.sleep(3000);
    22. // =========================
    23. //释放资源
    24. semaphore.release();
    25. System.out.println("[" + Thread.currentThread().getName() + " ] 支付完成");
    26. } catch (Exception e) {
    27. e.printStackTrace();
    28. }
    29. }
    30. }