关于Thread.sleep()

zcw574836798 2015-04-10 10:38:03
现在的项目有这样一个需求,就是当程序在查询数据库时,如果查出符合条件的记录是空的,那么就用SLEEP让线程休眠几秒钟后再去重新查,如果这次查出的还是无符合的记录,那么就会抛出异常。现在有一个问题,如果我的sleep不是在run方法中调用,那么休眠的是当前线程,还是所有线程都无法访问这个类了。


代码这样写有什么问题
String sql = "xxxxxxxxxxxxxxxxxxx";
List<Map<String,object>> result = dao.query(sql);
if(result.size==0){
Thread.sleep(5000)
result = dao.query(sql);
if(resuly.size==0){
throw exception
}
}
...全文
140 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyw985 2015-04-10
  • 打赏
  • 举报
回复
我是没试过,你可以测试一下,看看是不是阻塞了。 如果不阻塞,就不用调整 如果阻塞,有两种做法 1.把service调整为property,或在service前弄一个中间类,@Scope("prototype") 2.线程处理。。。
淡定的峰哥 2015-04-10
  • 打赏
  • 举报
回复
当前线程sleep
zcw574836798 2015-04-10
  • 打赏
  • 举报
回复
引用 2 楼 lyw985 的回复:
比如controller类里面进行sleep
这就是一个接口服务,,要根据业务逻辑来判断哪里需要sleep
lyw985 2015-04-10
  • 打赏
  • 举报
回复
比如controller类里面进行sleep
lyw985 2015-04-10
  • 打赏
  • 举报
回复
为什么不在多例的地方sleep,偏偏要在单例的Service里sleep

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧