Java学习笔记:线程,并发,线程同步,同步锁,死锁【诗书画唱】
并发介绍:
同一个对象多个线程同时进行操作,就会出现线程不安全,并发出现的三个要素
1.同一个对象
2.多个用户
3.同时操作
当同一个对象被多个用户同时操作时,就会出现线程并发问题,如何解决?
可以使用线程同步
线程同步:
线程同步是java虚拟机处理并发的一种机制,多个需要访问同一个对象的线程会被放入到线程池里,形成线程队列,有当前访问该对象的线程形成一把锁,当该线程访问完对象后,才会解除锁,然后才可以被其他线程访问
同步锁使用的两种情况
:
1.同步锁可以修饰块,将一块代码修饰为同步的
2.同步锁可以修饰方法,将整个方法修饰为同步的
锁的注意事项
:
1.锁的位置,如果太大会造成资源浪费,如果太小会造成锁不住内容
2.锁,方法锁默认使用锁的内容是this,要根据当时的情况去选择锁,不能够使用进行变化的值,要看同步块改变的内容去选择正确的锁
死锁:
某一个同步块中同J时拥有“两个或者以上对象的锁”,就可能发生“死锁的问题”
如何避免死锁:
进行锁内容的时候不要在一个同步锁中添加其他锁