老哥们,我老大在循环里写 Thread.sleep,到处都这么写,有问题吗

2021-12-01 09:09:24 +08:00
 Aliberter

他为了实现一个定时任务的功能,因为他说 spring 的定时任务不好用,每次跑着跑着就没了,所以想出来这种写个死循环,然后执行一次就休眠一段时间的方法,但是我看 IDE 都会报警告,说禁止在循环里写 Thread.sleep ,我在 stackoverflow 上看了好多解释的帖子,说很浪费资源,发给他看,他之前说这样写不会浪费资源,看了帖子后又说浪费点资源没事,主要是这样实现的定时任务很稳定,求老哥们的意见,这样到底有没有问题?

8539 次点击
所在节点    Java
66 条回复
Aliberter
2021-12-01 09:38:20 +08:00
@WytheHuang 我着实想跑了,可是才入职半年,而且也年底了,唉,先忍忍吧,明年来了看情况开溜
gadfly3173
2021-12-01 09:39:01 +08:00
在循环里写 sleep 也不是不能接受的,比如一些循环调用第三方 api 的,为了防止执行过快碰到 api 的 qps 上限,加个 sleep 简单有效
Spoter
2021-12-01 09:39:19 +08:00
@Aliberter 保留聊天证据
Aliberter
2021-12-01 09:39:24 +08:00
老哥们,点击量高我有点心慌啊,毕竟吐槽老大了,一会我删帖了哈
Cihua
2021-12-01 09:39:48 +08:00
@Aliberter 18# 针对这种情况我后来遇见问题一律文字沟通,事后甩他脸上,文字发过去如果人过来说,那我就下楼抽根烟等回复
Aliberter
2021-12-01 09:40:18 +08:00
@Spoter 哈哈 都是口头交流 只能录音了下次
Aliberter
2021-12-01 09:41:09 +08:00
@Cihua 学到了,以后多文字沟通,保留证据哈哈
Aliberter
2021-12-01 09:41:35 +08:00
@gadfly3173 ok 明白了 谢谢老哥
0312birdzhang
2021-12-01 09:43:06 +08:00
@shenlanAZ #15 可以的,有时候 jvm 并不是那么聪明,手动 gc 是有使用场景的。
dzdh
2021-12-01 09:45:08 +08:00
@Aliberter v2 不准删帖 2333333
Aliberter
2021-12-01 09:45:47 +08:00
@0312birdzhang 说起 gc ,我们现在这个项目,分了 4 个 G 的内存,线程数太多,将近 300 多个,平均每 0.19 秒就要 gc 一次,部署了两天已经 gc 三万多次了,这是不是要炸了啊。。我感觉已经无法直视了,
Aliberter
2021-12-01 09:48:35 +08:00
@dzdh 哈哈哈 忘了 那就这样吧 没事
tabris17
2021-12-01 09:48:49 +08:00
具体问题具体分析,就一个线程,也不是频繁切换,这么搞完全没问题
Aliberter
2021-12-01 09:51:28 +08:00
@tabris17 ok 明白了 谢谢老哥
Aliberter
2021-12-01 09:52:11 +08:00
老哥们,暂停回复吧,我要搬砖了,谢谢大家哈~
luozhiyun
2021-12-01 10:12:11 +08:00
以我的经验来看,遇到这种事情,最多提醒一次,后面就不要再说了,老大说什么都是对的。你要是觉得在他手上学不到东西,可以跳槽
JoJoStark
2021-12-01 10:42:31 +08:00
@Aliberter 这种甩锅领导太多了,能当领导脸皮都不是一般的厚
ykk
2021-12-01 10:46:06 +08:00
想了下我也在循环里写过 sleep ,为了协调两个进程的时间,不然一个队列灌太快会被冲掉,至今不理解原因
bxb100
2021-12-01 10:48:06 +08:00
while true + sleep 做定时任务没问题啊
ligiggy
2021-12-01 11:01:25 +08:00
非 java ,我的 死循环里面好像都加了 thread.sleep(). 就算在线程里面跑,我也加了

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

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

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

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

© 2021 V2EX