用于限制获取线程资源的数量
@Test public void test1() { //~~资源的次数 Semaphore semaphore = new Semaphore(3); for (int i = 0; i < 10; i++) { Parent parent = new Parent("第" + i + "个人", semaphore); new Thread(parent).start(); } } } /*** * 资源剩余量的判断 */ class Parent implements Runnable { private String name; private Semaphore sc; public Parent(String name, Semaphore sc) { this.name = name; this.sc = sc; } @Override public void run() { try { //~~查看剩下的资源 int availablePermits = sc.availablePermits(); if (availablePermits > 0) { System.out.println(name + "终于有资源了"); } else { System.out.println("怎么资源枯竭了"); } //申请资源, sc.acquire(); Thread.sleep(new Random().nextInt(1000)); //~~资源使用的时间 //~~释放资源 sc.release(); } catch (Exception e) { } }