美文网首页
第二章Synchronized简介

第二章Synchronized简介

作者: 西西_20f6 | 来源:发表于2020-07-05 10:42 被阅读0次

    Synchronized作用:
    如果一个对象对多个线程可见,则对该对象变量的所有读取和写入都是通过同步方法来完成的。 为了避免线程干扰和内存一致性错误。

    Synchronized能够保证同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的目的。该段代码会以原子的方式执行。

    Synchronized在高并发地位:
    1,Synchronized是java关键字,被java语言原生支持,
    2,是最基本的互斥同步手段
    3,是并发编程中的元老级角色,是并发编程的必学内容

    不控制并发的后果:
    实战:两个线程同时a++,最后结果比预计的少。
    这是因为a++,实际上包含了三个操作,它不是一个原子操作
    (1)读取a
    (2)将a+1
    (3)将a的值写回内存
    在多线程的情况下,这三步任何一步的执行都有可能被打断。
    假设t1读取到a=9,然后执行a+1=10,还没来得及写到内存中,被t2线程打断了, t2也读取了a=9(因为t1还没来得及写入10,所以t2看不到a的变化),接着t2执行了a+1=10,然后t1将a=10写入,t2也将a=10写入。这我们的预期结果不符,按理来说t1,t2各执行了一次操作,a应该=11。

    这就导致了线程不安全的后果。

    相关文章

      网友评论

          本文标题:第二章Synchronized简介

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