Java 如果用最优方式判断是否超出 100 毫秒

2018-08-30 10:51:03 +08:00
 biaoliruyi

公司安全给了一个基础服务前端 api 接口都要走一边安全服务(串行的),需要控制在 100 毫秒内如果安全服务没有响应完就直接跳过它。 本来我的解决方案是每次调用前开始计时去监听这个计时器再调用安全服务如果超过 100 毫秒就跳出。但是这样对 cpu 开销太大各位有什么好点的解决方案吗

5031 次点击
所在节点    Java
22 条回复
spLite
2018-08-30 11:02:11 +08:00
如果调用安全服务是前端发起的,跟 java 没直接关系? js 设置 http 请求超时时间 100ms。如果前端调后台,后台执行业务前(拦截器中?)调用安全服务,同理也可以设置超时时间
wdlth
2018-08-30 11:03:41 +08:00
这类似于服务熔断吧
biaoliruyi
2018-08-30 11:06:21 +08:00
@spLite 后端和安全交互
metrxqin
2018-08-30 11:06:55 +08:00
语无伦次,程序员的语文水平这么差吗?平时需求得急死吧?
biaoliruyi
2018-08-30 11:07:33 +08:00
@wdlth 性质有点像 触发超时
biaoliruyi
2018-08-30 11:09:15 +08:00
@metrxqin 你在这阴阳怪气什么?
Rush9999
2018-08-30 11:12:32 +08:00
AwaitTermination
biaoliruyi
2018-08-30 11:29:36 +08:00
@Rush9999 谢谢
sagaxu
2018-08-30 11:31:20 +08:00
计时器是不太占用 cpu 的
micean
2018-08-30 11:37:18 +08:00
“跳出的 CUP 开销大”如果是指的抛出异常的话,请看 exception 的 4 参构造函数,不搞 track 的话,开销很小的
DeadLion
2018-08-30 12:27:40 +08:00
为什么一定要串行
按照你这说法完全可以并行吧
业务正常走,安全校验也走着
并发包下面有可用的工具类啊 countdownlaunch 之类的
CODEWEA
2018-08-30 13:48:53 +08:00
请求设置超时
ginux
2018-08-30 13:59:39 +08:00
futuretask 了解下
vjnjc
2018-08-30 14:00:57 +08:00
是 javaee 调用 HTTP API 么,请求时的 client 可以设 timeout 啊🤓
yanyuechuixue
2018-08-30 14:17:20 +08:00
@livid #4
nullen
2018-08-30 14:27:46 +08:00
触发超时就行了。
skyleft
2018-08-30 14:57:23 +08:00
future.get(timeout=xxx)
zhchyu999
2018-08-30 15:05:04 +08:00
根据以往经验,http 接口,并行并不一定有串行快
biaoliruyi
2018-08-30 15:50:41 +08:00
谢谢大伙,我实现测试下 之后把解决方案发出来
D3EP
2018-08-30 19:34:16 +08:00
你这也太……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/484481

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX