xwl 2016-11-26 09:41 采纳率: 50%
浏览 1121

高并发限流处理是否合理? 场景 :交易通道流量有限

 public class LimitProcessTest {
    //最大处理条数
    static int maxLine = 10;
    // 当前处理条数
    static int line = 0;

    public synchronized int getToken() {
        if(line > maxLine){
            return -1;
        }
        return line++;
    }

    public synchronized int giveUpToken() {
        return line--;
    }

    public static void main(String[] args) throws InterruptedException {
        LimitProcessTest lpt = new LimitProcessTest();
        for (int i = 0; i <500; i++) {
             Thread.sleep(25);
             new Thread(lpt.new Process(lpt, i)).start();
        }
    }

    public class Process implements Runnable{

        private LimitProcessTest lpt;
        private int index ;

        Process(LimitProcessTest lpt1,int i){
            this.lpt=lpt1;
            this.index=i;
        }

        @Override
        public void run() {
            try {
                int token = lpt.getToken();
                if(token==-1){
                    System.out.println("第 "+index+" 个人访问发现很多人,等下来...");
                    return;
                }else{
                    System.out.println("第 "+index+" 个人访问, 当前处理人数  "+token);
                }
                Thread.sleep(753);
                System.out.println("第 "+index+" 个人访问, 当前处理人数  "+lpt.giveUpToken());
            } catch (InterruptedException e) {

            }
        }
    }
}
  • 写回答

1条回答 默认 最新

  • devmiao 2016-11-26 15:01
    关注
    评论

报告相同问题?