| | |
| | | * 停止线程池
|
| | | * 先使用shutdown, 停止接收新任务并尝试完成所有已存在任务.
|
| | | * 如果超时, 则调用shutdownNow, 取消在workQueue中Pending的任务,并中断所有阻塞函数.
|
| | | * 如果仍人超時,則強制退出.
|
| | | * 如果仍然超時,則強制退出.
|
| | | * 另对在shutdown时线程本身被调用中断做了处理.
|
| | | */
|
| | | public static void shutdownAndAwaitTermination(ExecutorService pool)
|
| | |
| | | Long number = redisTemplate.execute(limitScript, keys, count, time);
|
| | | if (StringUtils.isNull(number) || number.intValue() > count)
|
| | | {
|
| | | throw new ServiceException("访问过于频繁,请稍后再试");
|
| | | throw new ServiceException("访问过于频繁,请稍候再试");
|
| | | }
|
| | | log.info("限制请求'{}',当前请求'{}',缓存key'{}'", count, number.intValue(), key);
|
| | | }
|
| | |
| | | }
|
| | | catch (Exception e)
|
| | | {
|
| | | throw new RuntimeException("服务器限流异常,请稍后再试");
|
| | | throw new RuntimeException("服务器限流异常,请稍候再试");
|
| | | }
|
| | | }
|
| | |
|