【发布时间】:2019-11-29 02:02:11
【问题描述】:
例如考虑以下场景。
App1:我有一个多线程的 java 应用程序,它在 DB 中输入了很多文件。
App2:当我使用其他应用程序访问数据库时,它获取结果的速度很慢。
因此,当两个应用程序同时工作时,数据库在前端应用程序上获取结果需要大量时间。
在这里,我想暂停 App1 上的所有事务(线程)一段时间。考虑到在使用应用程序 2 时已经安装了触发器。所以当 App2 空闲时,App1 会像什么都没发生一样恢复。请列出一些或一种最佳方法来实现这一目标
Map<Thread, StackTraceElement[]> threads = Thread.getAllStackTraces();
for (Map.Entry<Thread, StackTraceElement[]> entry : threads.entrySet()) {
entry.getKey().sleep();
}
这并不好。
【问题讨论】:
-
请阅读What types of questions should I avoid asking? - 询问主观上好的方法列表对于 SO 格式来说过于宽泛和固执己见。可能还有其他以讨论为中心的网站更适合此类问题。
-
如果你想要一个像定时器一样工作的东西,为什么不使用定时器(java.util.Timer)?可以安排一次执行,也可以定期重复执行。
-
或者只是在你的 Thread 中放一个 Thread.sleep,当标志设置为 true 时执行(所以如果你愿意,也可以从线程外部更改标志)跨度>
-
@billbrinck:通过 Thread.sleep() 我可以暂停当前实例线程。我想暂停所有线程。通过获取所有正在运行的线程然后触发 .sleep() 并没有真正起作用。
-
但只有你创建的线程,对吧?
标签: java multithreading parallel-processing database-trigger thread-sleep