2013-03-13 24 views
0

为什么我需要在使用同步块的Im时传递“this”?同步的partemer的目的是什么?为什么我需要通过这个当Im使用同步块?

+0

请解释你的问题的一些代码? – uba 2013-03-13 08:44:05

+0

通过使用对象锁来完成同步,对'synchuonized()'块我们已经知道锁必须被获取到哪个对象 – 2013-03-13 08:44:18

+0

已经在其他地方解释过了(http://bit.ly/ZHBFgn),以及很多的时代。 – 2013-03-13 08:47:36

回答

0

因为​​需要锁定对象。 this和任何一样方便,或者你可以说Object lock = new Object()lock同步。

或者,您可以将您的方法标记为​​。

0

Java同步块结构采用括号中的对象。 “this”是调用哪个方法的实例。被同步的结构在括号中的对象被称为监视对象。该代码被称为在监视器对象上同步。同步实例方法使用它所属的对象作为监视器对象。

只有一个线程可以在同一监视器对象上同步的Java代码块内执行。

0

同步将在您指定的对象上完成,这意味着如果两个线程在同一个对象上同步,则只能有一个同时运行代码块。

它可以是任何对象,但它通常会是this。例如,这使您可以在同一个类中的不同对象上进行同步。

0

了Syntex是synchronized(objectLock) { } 不necessorily this, 我们需要传递一个对象,这是我们想给的情况下,独家获得的多个线程试图运行同一个synchronized块。 这样,如果在任何时间点,2个或更多线程试图访问同步块,则传递的对象(在这种情况下为'this')将具有该块的独占访问权限,除非块扩展完成,否其他人可以访问该块。

0

Synchronize使用对象引用来锁定监视器对象。 要防止同时访问的每个资源应具有其自己的监视器对象。最简单的方法是使用this

相关问题