TestSemaphore.java 767 B

123456789101112131415161718192021222324
  1. import java.util.concurrent.*;
  2. public class TestSemaphore {
  3. public static void main(String[] args) {
  4. int resources = 2;
  5. Semaphore semaphore = new Semaphore(resources);
  6. ExecutorService executor = Executors.newCachedThreadPool();
  7. for (int i = 1; i <= 10; i++) {
  8. final int num = i;
  9. executor.execute(() -> {
  10. try {
  11. semaphore.acquire();
  12. System.out.println("Thread " + num + " start.");
  13. Thread.sleep(100);
  14. } catch (Exception e) {
  15. e.printStackTrace();
  16. } finally {
  17. semaphore.release();
  18. }
  19. });
  20. }
  21. executor.shutdown();
  22. }
  23. }