Java中如何实现线程同步:synchronized、Lock、volatile的区别及应用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3226个文字,预计阅读时间需要13分钟。
线程同步:当有一个线程在对内存进行操作时,其他线程都不能对该内存地址进行操作,直到该线程操作完成。其他线程才能进行操作,然后又回到同步状态。
线程同步线程同步:当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态,实现线程同步的方法有很多。
为什么要创建多线程?在一般情况下,创建一个线程是不能提高程序的执行效率的,所以要创建多个线程。
-
为什么要线程同步
-
多个线程同时运行的时候可能调用线程函数,在多个线程同时对同一个内存地址进行写入,由于CPU时间调度上的问题,写入数据会被多次的覆盖,所以就要使线程同步。
-
例如:我们去银行存钱,那肯定是我们银行卡里原本的钱加上要存入的钱。但是在你存钱的同时你的朋友在给你的银行卡转钱,这是两个线程,这两个线程同时拿到了银行卡的本金,那么这两个线程最后都会返回一个总金额,那这两个总金额都是不正确的,只有这两次交易有一个先后顺序才行,这就是线程同步的一个原因。
-
- 同步就是协同步调,按预定的先后次序进行运行。如:你做完,我再做。
- 错误理解:“同”字从字面上容易理解为一起动作,其实不是,“同”字应是指协同、协助、互相配合。
- 正确理解: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法。
本文共计3226个文字,预计阅读时间需要13分钟。
线程同步:当有一个线程在对内存进行操作时,其他线程都不能对该内存地址进行操作,直到该线程操作完成。其他线程才能进行操作,然后又回到同步状态。
线程同步线程同步:当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态,实现线程同步的方法有很多。
为什么要创建多线程?在一般情况下,创建一个线程是不能提高程序的执行效率的,所以要创建多个线程。
-
为什么要线程同步
-
多个线程同时运行的时候可能调用线程函数,在多个线程同时对同一个内存地址进行写入,由于CPU时间调度上的问题,写入数据会被多次的覆盖,所以就要使线程同步。
-
例如:我们去银行存钱,那肯定是我们银行卡里原本的钱加上要存入的钱。但是在你存钱的同时你的朋友在给你的银行卡转钱,这是两个线程,这两个线程同时拿到了银行卡的本金,那么这两个线程最后都会返回一个总金额,那这两个总金额都是不正确的,只有这两次交易有一个先后顺序才行,这就是线程同步的一个原因。
-
- 同步就是协同步调,按预定的先后次序进行运行。如:你做完,我再做。
- 错误理解:“同”字从字面上容易理解为一起动作,其实不是,“同”字应是指协同、协助、互相配合。
- 正确理解: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法。

