Java中的同步是通过在某些特定对象上获取监视器来完成的。因此,如果您这样做:
class TestClass { SomeClass someVariable; public void myMethod () { synchronized (someVariable) { ... } } public void myOtherMethod() { synchronized (someVariable) { ... } }}
然后,这两个块将通过
someVariable不更改而随时执行两个不同的线程来保护。基本上说这两个块是与变量同步的
someVariable。
当您
synchronized使用该方法时,它的基本含义与相同
synchronized (this),即对该方法执行的对象进行同步。
那是:
public synchronized void myMethod() { ...}
意思是:
public void myMethod() { synchronized (this) { ... }}
因此,要回答您的问题-是的,线程将无法同时在不同线程中调用这些方法,因为它们都持有对同一监视器(
this对象监视器)的引用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)