我刚刚创建了一个单例方法,我想知道该函数的功能@synchronized()
,因为我经常使用它,但不知道其含义。
它在代码块周围声明了一个关键部分。在多线程代码中,请@synchronized
确保在任何给定时间,只有一个线程可以在块中执行该代码。
如果您不知道它的作用,那么您的应用程序可能不是多线程的,并且您可能不需要使用它(特别是如果单例本身不是线程安全的)。
编辑:添加了一些其他信息,这些信息不在2011年的原始答案中。
该@synchronized
伪指令可防止多个线程进入任何受引用同一对象的@synchronized
伪指令保护的代码区域。传递给@synchronized
指令的对象是用作“锁”的对象。如果将不同的对象用作锁,则两个线程可以位于代码的同一受保护区域中,并且您也可以使用与锁相同的对象来保护两个完全不同的代码区域。
另外,如果您恰好通过nil
作为锁定对象,则将根本不会采取任何锁定。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句