您将不断创建新的
Integer对象,然后对其进行同步,这至少使考虑它变得非常混乱。这样就可以得到以下情况:
线程A保持当前值
nRequests(假设为0)
线程B排队等待相同的值(0)
线程A增加nRequests(到值1)
线程C掌握了新值并对其进行同步,增加并释放了该值。
线程A在0处放开了监视器
线程B在0上同步并增加到1,从而覆盖C的更改
使用第二种方法,您只有一个对象,每个人都必须同步。正是您想要的。

您将不断创建新的
Integer对象,然后对其进行同步,这至少使考虑它变得非常混乱。这样就可以得到以下情况:
线程A保持当前值
nRequests(假设为0)
线程B排队等待相同的值(0)
线程A增加nRequests(到值1)
线程C掌握了新值并对其进行同步,增加并释放了该值。
线程A在0处放开了监视器
线程B在0上同步并增加到1,从而覆盖C的更改
使用第二种方法,您只有一个对象,每个人都必须同步。正是您想要的。