TestSemaphore.java 834 B

12345678910111213141516171819202122232425
  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. System.out.println("Thread " + num + " end.");
  15. } catch (Exception e) {
  16. e.printStackTrace();
  17. } finally {
  18. semaphore.release();
  19. }
  20. });
  21. }
  22. executor.shutdown();
  23. }
  24. }