![]() |
1
1
同步对象不会以任何方式“锁定”它。除非以相同的方式同步更新对象的字段,否则它可能很好地与您在这里介绍的读取代码交织。 |
![]() |
2
0
不,第二个线程不会等待,除非它有
|
![]() |
3
0
同步块只保护其中的代码。所以,若两个或多个线程试图在同步块内运行代码(由同一对象监视器保护),它们将以独占方式执行。这意味着,如果一个线程已经进入同步块,其他线程将不得不等待,直到它退出。 同步块无论如何都不会锁定对象,它只是使用对象的监视器来保护其中的代码。如果要使对象线程的方法安全,那么必须声明它们是同步的。
现在,多个线程可以安全地调用getField()和setField)。 然而,使用synchronized会带来性能成本,您可以尝试在中使用Locks或Atomic类 java.util.concurrent.atomic 例如AtomicInteger、AtomicBoolean或AtomicReference。 |
|
user29759326 · 如何返回递归函数中的最后一个值? 3 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 3 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 3 月前 |
![]() |
rudraraj · java中未声明最终变量 4 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 4 月前 |