while循环紧挨着写synchronized 只会有一个线程在运行
时间: 2024-03-31 09:32:47 浏览: 61
while 循环
如果在while循环紧挨着写synchronized关键字,那么只会有一个线程在运行。这是因为synchronized锁的是对象,当一个线程获取了锁并进入synchronized块时,其他线程只能等待该线程执行完毕并释放锁后才能进入synchronized块。
如果while循环中的代码需要保证线程安全,可以在while循环体内部加上synchronized块,这样每次循环时只有一个线程能够进入synchronized块并执行代码,其他线程则需要等待该线程执行完毕并释放锁后才能进入。
需要注意的是,如果在while循环中使用synchronized锁的是对象,那么每次循环都会创建一个新的对象,这可能会影响程序的性能。为了避免这种情况,可以将锁定的对象提出while循环,或者使用静态变量或类级别的锁。
阅读全文