有没有办法阻止所有线程同时运行一行代码?

时间:2020-10-09 03:59:43

标签: java multithreading

我有一个程序,希望我的线程对其他内容进行某种更新,但是由于我同时启动所有线程,因此它们同时进行更新,这违背了目的,因为它们都互相覆盖。我希望线程更新某些内容,让某些内容快速使用它,然后再进行更改。有没有办法让任何线程先运行然后让其他线程等待?感觉我什么也做不了,因为如果我更改线程类,那么所有线程都将执行更改并仍然同时执行。我也使用GUI,所以不能只在每个线程的开始调用之间使用Thread.Sleep。我认为没有任何代码可以解决这个问题,我只想知道是否有一种方法可以阻止除一个线程之外的所有线程,或者延迟每个线程同时到达同一行代码,因为它们都改变了变量。

1 个答案:

答案 0 :(得分:0)

为此目的,请使用同步块。当代码块以同步方式包装时,只有一个线程可以访问它,而其他线程则等待轮换。

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