美文网首页
java中synchronized的理解

java中synchronized的理解

作者: 上官若枫 | 来源:发表于2018-03-14 17:07 被阅读11次

    含义:

    synchronized是Java中的关键字,是一种同步锁。在多线程操作的时候,使用这个Java关键字可以对对象加锁,当次线程执行完成以后,其他线程才能执行这个事件。

    用法:

    1.修饰代码块:synchronized(this),被修饰的代码块成为同步代码块,作用对象是调用这个代码块的对象。
    一个线程访问一个对象中的synchronized(this)同步代码块时,其他线程试图访问该对象的线程将被阻塞。当不同线程访问不同对象中的代码块时,两个线程可以同时执行
    当一个线程访问对象的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该对象中的非synchronized(this)同步代码块,而不受阻塞
    2.修饰一个方法:同步方法,作用对象是调用这个方法的对象,不能被继承,也就是说子类复写了父类,但是子类的方法默认并不同步。
    3.修饰静态方法:作用对象是这个类的所有对象,和修饰类是一样的效果。
    4.修饰一个类:作用对象是这个类的所有对象
    5.修饰一个对象:
    当一个线程访问一个加锁对象时,其他试图访问该对象的线程将会阻塞,直到该线程访问该对象结束。也就是说谁拿到那个锁谁就可以运行它所控制的那段代码。
    当没有明确的对象作为锁,只是想让一段代码同步时,可以创建一个特殊的对象来充当锁,零长度的byte数组对象创建起来将比任何对象都经济――查看编译后的字节码:生成零长度的byte[]对象只需3条操作码,而Object lock = new Object()则需要7行操作码。

    相关文章

      网友评论

          本文标题:java中synchronized的理解

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