
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习Java编程开发语言,而今天我们就一起来了解一下,Java编程安全性问题都有哪些。
偏向锁
锁不会主动释放,只有当出现竞争时,才会去检查是否需要释放或者重新偏向锁,主要应用场景适用于基本只有一个线程访问同步代码块,可以无限重复获取偏向锁,大家可以看到其实在竞争偏向锁时需要在暂停当前持有锁的线程的(当然是要在安全点暂停),所以在高并发高竞争的情况下可以考虑关闭偏向锁。
轻量级锁&重量级锁
轻量级锁在竞争锁失败时,会通过自旋的方式尝试获取锁,而重量级锁竞争失败后会直接阻塞线程。所以,轻量级锁适用于那些同步代码块执行速度很快的场景,而重量级锁则对应同步代码块执行时间长的场景。
Concurrent
Java类库中有专门的concurrent包实现线程安全,核心类就是AQS(AbstractQueuedSynchronizer),一个抽象队列同步器,相当于一个模板,类库中ReentantLock等都是通过它来实现的。
Synchronized
Synchronized主要是通过对象锁的方式来实现线程安全(这边的锁是指虚拟机实现的锁,和JavaLock类库不是一个概念),修饰静态方法获取的是Class对象的锁,修饰方法是获取当前对象this的锁,修饰括号内容是获取括号内对象的锁。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。