java - 有没有办法阻止所有线程同时运行一行代码?
问题描述
我有一个程序,我希望我的线程对其他东西进行某种更新,但是由于我同时启动所有线程,它们同时进行更新,这违背了目的,因为它们都相互覆盖. 我想要一个线程来更新一些东西,让它快速使用它,然后再进行更改。有没有办法让任何线程先走,然后让其他线程等待?感觉就像我什么都做不了,因为如果我更改线程类,那么所有线程都会执行更改并且仍然同时执行。我也在使用 GUI,所以我不能只在每个线程的 start 调用之间使用 Thread.Sleep。我认为任何代码都不会帮助解决这个问题,我只想知道是否有办法阻止除一个之外的所有线程,
解决方案
为此目的使用同步块。当一个代码块被同步包装后,只有一个线程可以访问它,其他线程等待轮到自己
synchronized(this)
{
// your line of code
}
推荐阅读
- c# - 在 asp.net 中检查表中的值
- callback - ROS 近似时间同步器未进入回调
- python - Python Tkinter GUI 自动化
- android - Android - 如果文本视图之间存在冲突,请使用省略号
- python - `if __name__ == '__main__':` 成语有名称吗?
- python - 如何在python中缩放覆盖?
- azure - “注册”直接跳转到回复用户流的url,而不是azure登录/注册
- spring - 如何在运行时更新信任库而不在 Spring Boot 中重新启动应用程序
- javascript - 如何使用 vanilla JS 检查选择框中是否存在值?
- jenkins - 在声明式管道中运行 docker