美文网首页
类锁与对象锁的研究

类锁与对象锁的研究

作者: 天冷请穿衣 | 来源:发表于2019-01-28 12:09 被阅读0次

静态方法和非静态方法执行同步(synchronized)时,需要获取到一把锁。为了容易区分,我们分别称为类锁和对象锁。同步的实质是要获取到一个对象的锁,而每个类在JVM里都对应着一个对象,所以类锁也是一个对象锁。因此静态方法的锁和非静态方法的锁是不同的两把锁。

/*示例代码*/
public class TestSync {
    private static int num = 1000;
    
    public static void main(String[] args) {
        Thread t1 = new Thread(()->{
            Sych.sync();

        });
        
        Thread t2 = new Thread(()->{
            Sych sych = new Sych();
            sych.notsync();
        });
        t1.start();
        t2.start();
    }
    public static class Sych{
        public synchronized void notsync() {
            for(int i = 0;i < 100; i ++) {
                num --;
                System.out.println(num);
                try {
                    Thread.sleep(20);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        public synchronized static void sync() {
            for(int i=0; i < 100; i ++) {
                num --;
                System.out.println(num);
                try {
                    Thread.sleep(20);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

运行的结果出现:

999
998
997
997
996
996
995
 ...

出现并发现象,说明静态方法和非静态方法的锁不是同一个锁。

相关文章

  • 类锁与对象锁的研究

    静态方法和非静态方法执行同步(synchronized)时,需要获取到一把锁。为了容易区分,我们分别称为类锁和对象...

  • java 的锁?

    一、类锁 与 对象锁 类锁:任何时候都有效 在方法上加上static synchronized的锁 synchro...

  • 让你不再害怕JAVA的锁(一)

    java中的同步锁包括对象锁和类锁。 对象锁: 针对的是具体的对象实例;类锁:针对的是整个class类 现在先让我...

  • MySQL的锁怎么解?

    大家都知道java里面的synchronized,对象锁。(这里不扯什么类锁,对象锁,类锁其实就是Class对象的...

  • java类锁和对象锁

    java对象锁有两种:对象锁、类锁。 对象锁:在非静态方法上加锁。声明了一个对象锁。类锁:在静态方法上加锁,声明了...

  • Synchronized的使用

    锁的类型 类锁:只有synchronized修饰静态方法或者修饰一个类的class对象时,才是类锁。 对象锁:除了...

  • synchronized

    类锁和对象锁

  • 并发编程(二)初识synchronized与ReentrantL

    Synchronized修饰方法,代码块类锁,对象锁 synchronized实现原理:monitorenter与...

  • synchronized类锁与对象锁

    前言 在平常的开发中我们处理对象及变量的并发访问(保证数据的线程性安全)时都会想到synchronized关键字。...

  • synchronized :同步锁

    synchronized 同步锁分为对象锁、类锁、静态方法锁、非静态方法锁等。其中对象锁和非静态方法锁的作用域是对...

网友评论

      本文标题:类锁与对象锁的研究

      本文链接:https://www.haomeiwen.com/subject/jnxajqtx.html