多线程同步方法汇总

为什么需要同步?

多个线程同时访问一个对象时,可能会同时出现读写这个对象,那么这个对象的状态就会混乱,从而出现异常。

synchronized关键字

可以用于修饰代码块和方法,让修饰的代码可以同时运行

使用同步锁

Lock的系列子类等常见锁,悲观锁的形式保证同步,具体锁的种类可以查看我另一篇文章java锁的分类(简单概括版)

线程通信

不同线程间可以通过通信以保证同步,具体方法请看我的另一篇文章多线程的通信

Volatile关键字

可以修饰成员变量,用于保证变量在不同线程进行操作时都可见,即修改立刻生效(默认不加关键字时,变量会先加入工作内存中等待加入主内存),但不能保证原子性。
因为不能保证原子性,synchronized则可以,所以volatile的应用范围较小,常用于状态标记变量或与synchronized同时使用。

本人学习记录使用,欢迎留言互相学习交流。2018年12月29日13:12:30

参考文献

多线程同步的五种方法
Java并发编程:volatile关键字解析

猜你喜欢

转载自blog.csdn.net/weixin_37974649/article/details/85337222