JavaSE:线程同步机制

Posted Mr.Meeseeks

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE:线程同步机制相关的知识,希望对你有一定的参考价值。

线程同步机制(重点)

1.  基本概念

    <1>  当多个线程同时访问同一种共享资源时,可能会造成数据的覆盖等不一致性问题,

          此时就需要对线程之间进行通信和协调,该机制就叫做线程的同步机制

    <2>  多个线程并发读写同一个临界资源时,会发生线程并发安全问题

    <3>  异步操作:多线程并发的操作,各自独立运行

    <4>  同步操作:多线程串行的操作,先后执行的顺序

 

2.  案例 (银行的存款取款)

    <1>  当两个线程同时对同一个账户进行取款时,可能会导致最终的账户余额不合理

    <2>  引发原因:线程一执行取款时,还没来得及将取款后的余额写入后台,线程二就已经开始取款

    <3>  解决方案:线程一完成取款操作后,再让线程二执行即可,将线程的并发操作改为串行操作

    <4>  经验: 在开发中,尽量减少串行操作的范围,从而提高效率  

 

3.  实现方式

    使用synchronized关键字,实现同步 / 对象锁机制,从而保证线程执行的原子性,具体方式如下:

 

       <1>使用同步代码块的方式,实现部分代码的锁定,格式如下:

            synchronized (类类型的引用){

              编写所有需要锁定的代码;

            }

 

       <2>使用同步方法的方式,实现所有代码的锁定

          直接使用synchronized关键字来修饰整个方法即可

          该方法等价于:

            synchronized(this) {整个方法体的代码}

以上是关于JavaSE:线程同步机制的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE基础(十 一 )--<线程>线程同步,死锁,Lock锁,线程通信,生产消费问题,新增的线程创建方式

JavaSE

[javaSE] 多线程通信(等待-唤醒机制)

线程同步机制-- 线程同步辅助类

JavaSE——线程通信

线程同步机制