如果你有一个东西, 你想别人触碰它的时候,不能同时触碰,需要按照你想要的每次多少人来触碰。
算了,不做比喻了,代码原理其实也简单,我们直接先看代码,我再做简单的解释(估计不用看解释也能懂):
package com.semaphore.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.concurrent.Semaphore;
/**
* @Author : JCccc
* @CreateTime : 2018-11-27
* @Description :
* @Point: Keep a good mood
**/
@Controller
public class SemaphoreController {
//定义信号资源包的总数 只有2个
Semaphore semaphore=new Semaphore(2);
@GetMapping("/request")
@ResponseBody
public String Resquest(){
//设置这个接口可用的资源数
int availablePermits=semaphore.availablePermits();
if(availablePer