2 yuemuhan999 yuemuhan999 于 2016.01.14 18:04 提问

多线程 静态方法锁问题...

静态方法锁 锁的是类对象 .Class 是不是该类的所有静态方法是互斥的,还是只是加了锁的静态方法是互斥的?

1个回答

sunyake1212
sunyake1212   2016.01.14 18:06

只是加了锁的静态方法是互斥的。 跟非静态的一样

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C#多线程,静态锁static lock和非静态锁lock的区别及附跨线程访问UI的代码
本文只针对C#中,多线程同步所用到的锁(lock)作为研究对象。由于想更直观的显示结果,所以,在做demo的时候,就把多线程通过事件操作UI的代码也写了出来,留作备忘和分享吧。   其实多线程的同步,使用同步锁的方法用了好多次,今天无意中看到MSDN中,建议用: 1 private static readonly object locker1 = new object(); 2
Java线程_类锁(静态锁)的实现及讨论
首先什么是类锁? 就像可以对类的每一个实例(对象)获取一个对象锁一样,对于每一个类都可以获取一个锁,我们称之为类锁。 然后为什么要有静态锁? 因为静态方法是属于类的,即对于静态方法而言是没有对象引用的概念的,那么此时就无法使用对象来对静态方法进行锁定了。我们可以做这样的考虑,就是既然静态方法是属于类的,那么我们是否可以对类进行锁定呢?答案是肯定的,我们可以使用表示当前类的类对象或者从属于当前
方法锁和静态方法锁的区别
静态方法,需要对Class对象加锁。 非静态方法,需要对本对象(this)加锁。 非静态方法举例,例如,下面的两个例子的效果是完全一样的。     public synchronized int getX() {         return x++;     } 与     public int getX() {         synchronized
多线程中使用静态方法存在线程安全的问题
类的成员分两类,静态成员(static member)和实例成员(instance menber),静态成员属于类,实例成员则属于对象,即类的实例。    我们知道,静态字段和静态方法的调用都是通过类来调用的,静态方法不会对特定的实例操作,只能调用调用类中的其他属性和静态方法,不能调用类中的非静态属性和非静态方法。实例方法可以对特定的实例操作,既能访问静态属性和静态方法,也能访问实例属性和实例方
Java synchronized 非静态方法 静态方法的区别
package yi.test01; /** * @author yangwl * * * synchronized作用于静态方法和非静态方法的区别: * 非静态方法: * 给对象加锁(可以理解为给这个对象的内存上锁,注意 只是这块内存,其他同类对象都会有各自的内存锁),这时候 * 在其他一个以上线程中执行该对象的这个同步方法(注意:是该对象)就会产生互斥 *
静态方法加锁,和非静态方法加锁区别
// 这是一个很简单的类,里面共享静态变量 num,然后一个静态 和 非静态方法,都加上锁 // 我们假设有两个线程同时操作这两个方法,那么数据能互斥吗?   Java代码   public class Walk {       public static int num = 100;       public static Walk walk = new 
多线程与静态方法及其中的局部变量关系
static 方法 方法在该方法所属类型第一次被使用的时候加载、在该类型所在应用程序域卸载的时候卸载、也就是说 static 方法只加载一次、除非整个Domain 被卸载了。而实例方法(非静态方法),是在第一次该方法第一次调用的时候会加载、然后被缓存起来。但是中间如果有GC 的话, 就会被收集,那下次再调用该方法时,又得重新加载该方法。也就是说,实例方法有可能加载多次。总的来说,static
从头认识多线程-2.17 同步静态方法和静态代码块
这一章节我们来讨论一些同步静态方法和静态代码块。代码清单package com.ray.deepintothread.ch02.topic_17; /** * * @author RayLee * */ public class SynchClass { public static void main(String[] args) throws InterruptedExceptio
静态synchronized方法和非静态synchronized方法的锁对象不是同一个
静态synchronized方法的锁是Java文件对应的Class对象,而非静态synchronized方法的锁是是个实例对象,这两个锁并不是同一个,因此静态synchronized方法和非静态synchronized方法之间不会相互干扰验证public class Service { synchronized public static void printA() { //Class锁 t...
在多线程中使用静态方法时候会有线程安全问题
转载至:甜菜波波的博客  地址:http://www.cnblogs.com/tiancai/p/5417767.html 再次表示对网上知识贡献力量的感谢,是你们的无私奉献提高了国家软件开发的整体水平。 类的成员分为两类,静态成员(static member)和实例成员(instance member)。静态成员属于类,实例成员则属于对象,即类的实例。     简单讨论一下在一