Java 如何实现异步更新数据库呢?

2017-10-07 11:01:03 +08:00
 chunrong918

如题:

比如程序要执行以下步骤:

A:往单例类的 list 属性中写数据( list 的 size 到达 100 的时候,把 list 保存到数据中,同时清空 list )

B:执行业务,return true

现在希望是程序进来的时候,马上执行 B,异步去执行 A,请问如何实现呢?

谢谢大神们!

9646 次点击
所在节点    Java
27 条回复
chunrong918
2017-10-07 23:21:05 +08:00
@BBCCBB 是啊,阻塞队列加线程就可以解决了
chunrong918
2017-10-07 23:52:04 +08:00
@movistar 确实向你说的,考虑时间和队列长度问题,但是 elasticsearch 的那个类源码看不太懂,有点复杂呢
chunrong918
2017-10-08 00:06:29 +08:00
@sagaxu 好办法,这边的控制时间,定时去更新是使用 java 的定时器 timer 还是 crontab 啊?
chunrong918
2017-10-08 00:07:09 +08:00
@sagaxu 有相关代码可以参考一下吗
codeyung
2017-10-08 00:09:04 +08:00
异步 或者 队列线程 可以看下相关文档 和 GitHub
cxbig
2017-10-08 00:42:39 +08:00
一般我们都是用队列( Queue )做平衡
upupxjg
2017-10-13 18:08:31 +08:00
多线程,不是说 A、B 搞两个线程,而是把 A 写库这个事儿扔到线程池里去,List 攒够 100 (必须是 100 么?多一点都不行?) A 加锁,把这个 List 扔给线程池,再 new 一个 list 解锁。打完收工

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

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

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

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

© 2021 V2EX