- 博客(4)
- 收藏
- 关注
原创 java 无锁实现原理CAS解析
以一段取款余额引出问题 账户余额提取问题 public interface Account { public static void main(String[] args) { // 不安全 无锁 Account accountUnsafe = new AccountUnsafe(10000); Account.demo(accountUnsafe); } // 获取余额 Integer getBalanc
2020-05-25 16:52:47
370
原创 java线程安全的单例模式分析
本文针对于单例模式中对象创建中的线程安全问题。主要以懒汉式,饿汉式,静态内部类,枚举类分析在调用时创建对象的线程安全问题。 1.饿汉式 类加载会导致该单实例对象被创建 // 问题1:为什么加 final // 问题2:如果实现了序列化接口, 还要做什么来防止反序列化破坏单例 public final class HungrySingleton implements Serializable { // 问题3:为什么设置为私有? 是否能防止反射创建新的实例? private
2020-05-21 21:13:12
238
原创 java volatile关键字内存原理
内存屏障(Memory Barrier) 1.可见性 写屏障(Sfence)保证该屏障之前的,对共享变量改动都同步到主内存中去 读屏障(Ifence)保证该屏障之后的,对共享变量读取加载的为主内存中最新数据 2.有序性 写屏障在指令重排序时,不会将写屏障之前的代码排到屏障之后 读屏障在指令重排序时,不会将读屏障之后的代码排到屏障之前 volatile原理 volatile底层原理基于内存屏障 对volatile变量写指令会在之后加入写屏障 对volatile变量读指令会在之前加入读屏障 如何保
2020-05-19 14:15:51
391
原创 润乾报表在Tomcat服务上的部署步骤
润乾报表在Tomcat服务上的部署 1.在润乾报表设计器安装目录(…\report5\web\webapps)下找到demo文件夹;(这里使用的是润乾v5设计器) 2.将步骤1.中的demo文件夹放到tomcat的webapps下(此处我将demo文件夹名重命名为了reportserver) 3.配置数据库连接池(此处选用JNDI的连接方式) 1)确定报表中数据源的名称(此处数据源
2017-09-13 11:59:33
4046
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅