当前位置: 首页 > 知识库问答 >
问题:

如果我在静态方法上锁定类级别

濮金鑫
2023-03-14

假设我们有一个类,其中有一个实例方法和静态方法。我们用类级锁同步了静态方法中的块

共有2个答案

沈嘉瑞
2023-03-14

有可能< code>static synchronized和< code > non static synchronized 方法可以< code >同时或< code >并发运行,因为它们锁定不同对象。

谷德本
2023-03-14

第二个线程不会被阻塞.类级锁

 类似资料:
  • 根据我在 Java 课上的知识 非静态同步方法:锁定获取特定对象 静态同步方法:类上的锁获取 我对此有点困惑,因为我们可以通过类名或对象名调用静态方法。 请假设我的类有4个方法,所有方法都是同步的。2个方法是静态的,2个不是静态的。如果我创建了我的类“对象1”的1个对象,并且还有2个线程Thread1和Thread2 问题1:如果我将尝试访问静态同步方法,使用对象1(或类名),这是否意味着“对象1

  • 问题内容: Java教程说:“不可能在同一对象上两次调用同步方法。” 这对于静态方法意味着什么?由于静态方法没有关联的对象,所以synced关键字会锁定在类而不是对象上吗? 问题答案: 由于静态方法没有关联的对象, 所以synced关键字会锁定在类而不是对象上吗? 是。

  • 问题内容: 说,我有一个带有SomeType的具有静态方法的Class对象的引用。有没有一种方法可以调用该方法而不先实例化SomeType?最好不要转义强类型。 编辑:好的,我搞砸了。 在这种情况下,someMethod()始终不能是静态的。 问题答案: 根据定义,静态方法是在类上调用的,而不是在该类的实例上调用的。 因此,如果您使用: 您没有实例化任何东西(不考虑由JVM处理并且超出了您的范围的

  • 如果我在java类X中不使用任何setter/getter。当一个线程a具有类X的类级锁时,另一个线程B是否可以直接更改我的静态变量?? 假设线程A现在有类级锁。我可以从另一个线程B执行X.static\u variable=11吗? 我正在编写一段代码,以在java中获得死锁。 公共类A实现Runnable{ } } 公共类B实现Runnable{ } 但得到以下结果: 第二个有对象b的钥匙和等

  • 我是线程新手,目前正在学习线程同步章节。关于线程锁定中的一个场景,我有一个问题 以下是我所知道的: 1:当我在实例方法中放置实例锁时(即) 这里将发生的情况是,如果有一个类X的对象A被多个线程共享,并且一些线程t1正在执行f1的块,那么直到t1退出f1块,所有试图进入函数f3的其他线程,f1都将被阻止。f2和f4的情况也是如此。 现在,在静态锁的情况下,如果一个类有多个静态方法,并且我们希望这些方

  • 在讲类方法和静态方法之前,先来看一个简单的例子: class A(object): def foo(self): print 'Hello ', self >>> a = A() >>> a.foo() Hello, <__main__.A object at 0x10c37a450> 在上面,我们定义了一个类 A,它有一个方法 foo,然后我们创建了一个对象 a,并调用