Java中的同步(对象和静态方法)

关于Java中的同步,我有几个查询。我在网上阅读了很多内容,并为自己提供了很多信息,并因此产生了许多疑问。我会列出我的疑问,所以请有人帮助我解决我的疑问。

对象级同步:

1)对于以下代码示例。

public synchronized void a(){
    //todo
    }
}

什么是LOCK?如下面的示例代码所示,它将自动锁定“ this”吗?

public void a(){
    synchronized (this) {
        //TODO
    }
}

2)我们有多种方法代码块锁定在“ this”上。

public void a(){
    synchronized (this) {
        //TODO
    }
}
public synchronized void b(){
    synchronized (this) {
        //TODO
    }
}

那么这是否意味着如果b()的代码块被锁定,那么任何其他线程也将无法同时访问a(),因为它们对对象(this)有锁定?

类级同步:

3)对于以下代码

public static void c(){

synchronized (Main.class) {
        //todo
    }
}public static void d(){
    synchronized (Main.class) {
        //todo
    }
}public static void e(){
    //no syncronization here
}

问题1:如果c()被锁定,那么任何其他线程也可以访问具有同步块的d()吗?问题2:如果c()处于锁定状态,那么任何其他线程都可以访问非同步方法e()吗?

贾伯(Jaber)
  1. 是的,“这”是锁
  2. 该锁位于Main.class上,因此如果c中的锁已被获取,则d不能被另一个线程访问。

在第3点中。e()始终可以被多个线程访问,无论如何,因为它不同步。

希望有帮助:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

同步方法和静态变量访问JAVA / ANDROID

来自分类Dev

同步方法和静态变量访问JAVA / ANDROID

来自分类Dev

Java对实例和静态方法中实例和静态变量用法的说明?

来自分类Dev

Java线程安全:枚举和静态方法

来自分类Dev

Java线程安全:枚举和静态方法

来自分类Dev

Java中的动态和静态绑定

来自分类Dev

Java中的抽象类和静态

来自分类Dev

线程和静态方法

来自分类Dev

在Application类和静态类中存储全局对象

来自分类Dev

Java中对象的非同步方法?

来自分类Dev

Java中静态同步方法的用途是什么?

来自分类Dev

为什么在从方法和静态对象中删除Synchronized关键字时,Program会显示相同的输出?

来自分类Dev

为什么在从方法和静态对象中删除Synchronized关键字时,Program会显示相同的输出?

来自分类Dev

Java泛型和静态工厂方法-语法

来自分类Dev

Java覆盖实例和静态方法执行

来自分类Dev

Java:同步方法如何与静态同步方法同步?

来自分类Dev

pythone中类方法和静态变量的行为

来自分类Dev

混合实例和静态同步方法,得到意想不到的测试输出

来自分类Dev

在Java中同步对象

来自分类Dev

Java中的对象同步

来自分类Dev

MVC框架和静态方法

来自分类Dev

理解OOP和静态方法

来自分类Dev

API线程和静态方法

来自分类Dev

理解OOP和静态方法

来自分类Dev

Java类和静态块

来自分类Dev

继承和静态类型java

来自分类Dev

同步和静态同步有什么区别

来自分类Dev

PHP重载静态属性和静态方法

来自分类Dev

了解静态类和静态方法