有一个场景
在执行完一系列的数据库操作后,通过获取数据库的流水,来发送校验短信。但是这个数据是在之前一系列的数据库操作的,数据库操作有事务,必须得等方法执行完成后才可以提交。
我这边发送校验短信写在了事务操作里通过线程池开了一个线程来执行的,然后会有这样的情况,有些时候会发送校验短信线程先获取 cpu 执行,然后导致获取不到数据库的流水数据,线程创建运行后,如何可以等待事务的执行结束后再执行线程内的操作。
我目前的写法是,在线程里加了 Thread.sleep(1000),让线程进行睡眠,在 1000ms 内 事务的操作一般都已经执行结束,此时执行线程内的发送校验短信操作。
但我不知道我这个方法会不会有什么影响,有学过线程操作,但是第一次在实际开发环境中使用到,问问有什么更好的处理方法。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.