“同步”功能究竟是什么?

36 浏览
0 Comments

“同步”功能究竟是什么?

这个问题已经有答案了:

什么是\'synchronized\'的意思?

我有一个问题可能听起来非常基础,但在这里。作为Java中常用的,synchronize关键字用于处理多个线程访问一个特定实例。现在想象一下如果实例A有一个同步方法do()。这是意味着如果一个线程T1执行方法do()并获得A的锁,直到T1释放锁之前,其他线程将无法访问实例A吗?即使其他方法没有同步?或者这意味着所有非同步方法(或代码块)都是可以访问的,除了那个do()方法,它可能一次只被一个线程执行?

admin 更改状态以发布 2023年5月22日
0
0 Comments

如果T1在方法do()中获得锁,即该方法位于同步块中。
程序的其他部分,例如方法display()未同步,则其他线程可以访问此方法。
所以你的“或”是正确的。

0
0 Comments

直接从Java文档中摘取:

在同一对象上两次调用同步方法是不可能交错执行的。当一个线程在执行一个对象的同步方法时,所有调用该对象同步方法的其他线程都会被阻塞(暂停执行),直到第一个线程完成对象的操作。

因此,你后面的解释是正确的。

0