java同步(此)作用域

java同步(此)作用域,java,Java,如果我在同一java类的两个函数中编写synchronizedthis,但这两个函数可能被两个线程调用,那么这段代码还能工作吗 一些伪代码可能看起来像: class A { public funA() synchronized (this) { // do some things here; } } public funB() { synchr

如果我在同一java类的两个函数中编写synchronizedthis,但这两个函数可能被两个线程调用,那么这段代码还能工作吗

一些伪代码可能看起来像:

class A {
        public funA()
            synchronized (this) {
                // do some things here;
            }
        }

        public funB() {
            synchronized (this) {
                // do other things here;
            }
        }
}

或者我需要添加一个变量来执行此操作吗?

这意味着多个线程不能“同时”进入这两个同步块或其中一个。它是否有效取决于你到底想要实现什么


当前处于此类同步块中的线程被称为在该时刻拥有对象的监视器。在本例中,此线程指向对象的监视器。

线程在此块上同步。因此,假设没有其他方法,类中同时只有一个线程。您没有单独对这些方法进行同步。所以这可能行得通。虽然很难说,因为我不知道你想在方法上做什么。并发总是很棘手。

我不认为它是重复的,但它可能被认为是供参考的:另请参见…@JVMATL考虑到OP似乎不理解代码的作用,我觉得它回答了问题。实际上,这并不意味着。其他线程可以在外部同步实例,防止任何线程进入这些块。@BrianRoach实际上就是这个意思。在这种情况下,线程拥有对象监视器,因此0个线程可以进入这里,这符合我的语句。我不是在这里评论外部或内部。每个物体都有一个监视器。我可能被你原来的措辞弄糊涂了;这更清楚。