编辑代码

class Main {
	public static void main(String[] args) {
       Semaphore semaphore = new Semaphore(3); // 创建一个允许3个线程同时访问的Semaphore对象  
  
        // 创建三个线程,分别获取Semaphore的许可  
        Thread t1 = new Thread(() -> {  
            try {  
                System.out.println(Thread.currentThread().getName() + " 获取到许可");  
                Thread.sleep(1000); // 模拟线程执行任务的时间  
                System.out.println(Thread.currentThread().getName() + " 释放许可");  
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            } finally {  
                semaphore.release(); // 释放许可  
            }  
        });  
  
        Thread t2 = new Thread(() -> {  
            try {  
                System.out.println(Thread.currentThread().getName() + " 获取到许可");  
                Thread.sleep(1000); // 模拟线程执行任务的时间  
                System.out.println(Thread.currentThread().getName() + " 释放许可");  
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            } finally {  
                semaphore.release(); // 释放许可  
            }  
        });  
  
        Thread t3 = new Thread(() -> {  
            try {  
                System.out.println(Thread.currentThread().getName() + " 获取到许可");  
                Thread.sleep(1000); // 模拟线程执行任务的时间  
                System.out.println(Thread.currentThread().getName() + " 释放许可");  
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            } finally {  
                semaphore.release(); // 释放许可  
            }  
        });  
  
        // 启动这三个线程  
        t1.start();  
        t2.start();  
        t3.start();  
	}
}