在Java中,如果我在方法中使用了synchronized关键字,它将阻止同时由多个线程执行,无论是什么线程:
public synchronized void doSomething(){ // …
是的,有一个警告。
该 @synchronized 指令创建一个互斥锁,以防止大括号内的代码同时被不同的线程执行。需要注意的是,它使用传递给它的对象作为唯一标识符来区分受保护的块。所以,如果你正在使用 @synchronized(self) 在两种不同的方法中,这两种方法不会同时被不同的线程执行(因为它们共享相同的标识符(在这种情况下) self ))。
@synchronized
@synchronized(self)
self