如果仍然同步块将阻止两个线程同时进入关键部分。那么为什么需要传递一个论点呢?
同步块根据传递给它的对象来决定停止哪些线程。传递的对象用作由同步块保护的监视部分的标识符。
您的程序中可能有许多监视部分,所有这些监视部分可以相互并行执行。例如,如果有两个不相关的集合必须同时访问,则可以为每个集合设置单独的监视器部分。这样,仅当其他线程已经在访问同一集合时,线程才停止。访问两个不同集合的两个不同线程将被允许并发进行。
您的第一个例子很简单。它起作用的原因是将字符串对象初始化为字符串文字。由于文字的内插,所有进入该函数的线程都将获得相同的
String对象,因此同步块将适当地保护监视部分。



