Thread.sleep()的使用场景

之前背面经,在涉及sleep的知识点时,只是会介绍和wait的区别,什么sleep不释放锁wait释放锁,sleep需要指定时长而wait可以不指定。但是,具体使用场景的介绍少之又少。今天,我发现sleep在防止CPU负载过大方面挺有用的。

情况是这样的,我在跑毕设的storm工程时,有一个bolt发送数据实在过快,导致IDEA和SSH连接工具的日志打印卡的一比,跟不上了,Kafka接收到的消息,几秒钟就上千条。截止到问题解决时,已经上万条了…

image-20201224163617034

消息生产的实在太快了,虽然要高吞吐量,但测试环境这么高,机器扛得住,我却抗不住了。于是某几个关键的地方,加了Thread.sleep(1000),调试了几次,终于让消息每秒一条的处理了。

当然,上了生产环境还是得改改,比如每处理100条数据,休息1s。不然机器也会抗不住…