首页 > 解决方案 > 有没有办法阻止所有线程同时运行一行代码?

问题描述

我有一个程序,我希望我的线程对其他东西进行某种更新,但是由于我同时启动所有线程,它们同时进行更新,这违背了目的,因为它们都相互覆盖. 我想要一个线程来更新一些东西,让它快速使用它,然后再进行更改。有没有办法让任何线程先走,然后让其他线程等待?感觉就像我什么都做不了,因为如果我更改线程类,那么所有线程都会执行更改并且仍然同时执行。我也在使用 GUI,所以我不能只在每个线程的 start 调用之间使用 Thread.Sleep。我认为任何代码都不会帮助解决这个问题,我只想知道是否有办法阻止除一个之外的所有线程,

标签: javamultithreading

解决方案


为此目的使用同步块。当一个代码块被同步包装后,只有一个线程可以访问它,其他线程等待轮到自己

synchronized(this) 
{ 
      // your line of code
} 

推荐阅读