首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
码农的说话之道
掘友等级
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
18
文章 18
沸点 0
赞
18
返回
|
搜索文章
最新
热门
Spring IOC容器初始化:XML和注解
Spring框架中支持了两种不同形式的IOC容器初始化方式,一种是基于XML的容器初始化,另外一种是基于注解的初始化方式,初始化容器时使用的具体初始化类不同。 他们都是AbstractApplicationContext的子类,在该类中定义了基于xml和annotation初始…
Spring模块介绍
面向切面编程时使用。Spring通过"横切"的方式将贯穿于多业务中的公共功能独立抽取出来,形成单独的切面,并指定切面的具体动作,在需要使用该功能时,动态地将该功能切入到需要的地方。 用来实现AspectJ框架的集成。而AspectJ是一个通过对java扩展出之后的框架,框架里面…
线程安全-创建单例模式
问题3: 如果设置为共有,其它的类便可以无限创建对象,就不能设为单例了。 不能防止反射来创建新的实例,反射能够得到构造器对象,设置对象的accessable属性为true,通过暴力反射创建新的实例。 问题4: 静态成员变量初始化的时候创建对象,静态成员变量初始化是在类加载的时候…
volatile
原理volatile的底层实现原理是内存屏障对volatile变量的写指令后加入写屏障对volatile变量的读指令前会加入读屏障保证可见性保证有序性不能解决指令交错写屏障仅仅只能保证之后的读能够读到
平时写代码如何对synchronized优化
同步代码块中的代码尽量少,减少同步代码块中代码的执行时间,减少锁的竞争。 synchronized中执行的时间短,单位时间内执行的线程就多一点,等待的线程就少一点。 synchronized中执行的时间短,可能用轻量级锁或者自旋锁就能搞定,避免升级到重量级锁。 Hashtabl…
无锁->偏向锁->轻量级锁->重量级锁
大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,为了让线程获得锁的代价更低,引进了偏向锁。 偏向锁会偏向于第一个获得它的线程,它会在对象头存储锁偏向的线程id,以后该线程进入和退出同步代码块时只需要检查是否为偏向锁、锁标志位、以及ThreadId即可。 一旦出…
synchronized优化-CAS和java对象头
CAS:compare and swap(比较相同再交换)。是现代CPU广泛支持的一种对内存中的共享数据进行操作的一种特殊指令。 CAS作用:CAS可以将比较和交换转换为原子操作,这个原子操作直接有CPU保证。CAS可以保证共享变量赋值时的原子操作。CAS操作依赖3个值,内存中…
synchronized原理-JVM源码
在HotSpot虚拟机中,monitor是由ObjectMonitor实现的。其源码是用c++来实现的。 当多个线程执行到同步代码块时就会产生竞争,synchronized会执行monitorenter指令,最终会调用C++的ObjectMonitor::enter方法。 1.…
synchronized与lock的区别
1.synchronized是关键字,而Lock是一个接口2.synchronized会自动释放锁,而Lock必须手动释放锁3.synchronized是不可中断的,Lock可以中断也可以不中断4.通
synchronized原理-javap反汇编
synchronized的锁对象会关联一个monitor,这个monitor不是我们主动创建的,是JVM的线程执行到同步代码块时,发现对象没有monitor就会创建monitor。 monitor内部有两个重要的成员变量owner(拥有这把锁的线程),recursions(记录…
下一页
个人成就
文章被点赞
3
文章被阅读
14,963
掘力值
286
关注了
28
关注者
0
收藏集
0
关注标签
7
加入于
2019-03-27