美文网首页
Synchronized关键字

Synchronized关键字

作者: 过去今天和未来 | 来源:发表于2017-11-25 18:03 被阅读6次

    java多线程synchronized关键字详解:

        1.对资源进行加锁,使得同一时间只有一个线程进行操作,同步用以就解决多线程同时访问可能出现的问题,当synchronized方法执行完成或发生异常,会自动释放锁。

        2.多个方法的多线程情况,如果一个对象有多个Synchronized方法,某个时刻某个线程进入某个Synchronized方法,那么该方法没有执行完毕前,其他线程是无法访问该对象的任何synchronized方法

    结论:当synchronized关键字修饰方法时,该方法叫同步方法,java中每个对象都有一个锁,或者叫做监视器,当一个线程访问某个对象的Synchronized方法,将该对象上锁,其他任何线程无法访问该对象synchronized方法直到执行完毕后或者出现异常,才会将该对象锁释放。

       3.考虑静态的同步方法,当一个方法被synchronized和static修饰,非静态同步方法将对象上锁,静态方法不属于对象,属于类,它将这个方法所在类的class对象上锁

          结论:如果每个synchronized方法是static,当线程访问方法,它锁的不是synchronized方法所在的对象而是Class对象,因此当线程分别访问同一个类两个对象的两个static和synchronized方法时,他执行的顺序也是一个线程先去执行方法,执行完毕才会另一个线程才开始执行。

      4.synchronized块

           synchronized(object){}

          表示线程执行时将object对象上锁,当一个线程执行,将object对象锁住,另一个线程就不能执行对应的块了。可能方法只有几行代码涉及到线程同步问题所以synchronized块比synchronized方法更加细粒度地控制了多个线程的访问,只有synchronized块中不能同时被多个线程所访问,方法中其他语句仍可以被对象成所访问

    参考http://mp.weixin.qq.com/s/geSfQ5TxRgqmqrK1Js3Jfg

    相关文章

      网友评论

          本文标题:Synchronized关键字

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