美文网首页
synchronized

synchronized

作者: 旧式样 | 来源:发表于2018-10-26 20:22 被阅读0次

    讲synchronized关键字时候,就不得不提一下多线程问题同步问题

    多线程的同步问题:多个线程同时修改一个数据的时候,可能导致的问题 多线程的问题,又叫Concurrency 问题.

    Java中提供了同步机制来解决处理资源冲突问题,使用synchronized关键字

    同步快:

    代码1

    synchronized表示当前线程,独占 对象 someObject,如果有其他线程试图占有对象someObject,就会等待,直到当前线程释放对someObject的占用。someObject 又叫同步对象,所有的对象,都可以作为同步对象,为了达到同步的效果必须使用同一个同步对象

    代码二

    提一下这个someObject,首先它为任意一个对象,而且是各线程共同去占有的,然后当多个线程去启动并占有时,这就引入一个叫标志位的东西,每个对象存在一个标志位,并具有两个值0,1,当其中一个线程运行到代码一的同步快时先检查该对象的标志位,若为0状态,表明该对象有其他线程占有,它会继续等待,知道其被释放,这时该对象标志位为1,它会占有这个对象,执行同步快中的代码,并且会把someObject对象标志位设置为0,防止其他线程执行。

    同步方法:

    代码三

    此时只允许该类的一个实例访问该同步方法,不允许多个线程实例访问该方法


    ***     如果一个类,其方法都是有synchronized修饰的,那么该类就叫做线程安全的类 同一时间,只有一个线程能够进入 这种类的一个实例 的去修改数据,进而保证了这个实例中的数据的安全(不会同时被多线程修改而变成脏数据) 比如StringBuffer和StringBuilder的区别 StringBuffer的方法都是有synchronized修饰的,StringBuffer就叫做线程安全的类 而StringBuilder就不是线程安全的类 

    相关文章

      网友评论

          本文标题:synchronized

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