摘要: 相关概念 可见性:一个线程对共享变量值的修改,能够及时地被其他线程看到,我们就说这个变量是可见的。 共享变量:如果一个变量被多个线程使用到了,此时这个变量就会在每一个使用它的线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量。 计算机多核并发内存架构 最早是CPU直接和主内存打交道,数 阅读全文
posted @ 2018-11-08 16:58 小兵1985 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 博客作者:纯洁的微笑 JVM系列(①):java类的加载机制 JVM系列(②):JVM内存结构 JVM系列(③):GC算法 垃圾收集器 JVM系列(④):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo) JVM系列(⑤):tomcat性能调优与性能监控 JVM 阅读全文
posted @ 2018-11-05 11:26 小兵1985 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 原文出处: 纯洁的微笑 java类的加载机制 1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Cl 阅读全文
posted @ 2018-11-05 11:14 小兵1985 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 一,什么时候使用装饰者模式? 比如有一家店卖饮品,饮品就有不少种,每一种还可以加项,比如给可乐加冰,加糖,兑水什么的,每次加项的价格还不同,就会将代码弄的很繁琐,这种情况下就可以使用装饰者模式来实现. 二,什么是装饰者模式? 上述的例子中,可以以饮品为主体,用不用的各种需求来装饰它,比如有一个可乐对 阅读全文
posted @ 2018-10-30 14:56 小兵1985 阅读(272) 评论(0) 推荐(0) 编辑
摘要: volatile 阅读全文
posted @ 2018-10-10 08:41 小兵1985 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 单例模式的定义 一个类有且仅有一个实例,并且自行实例化向整个系统提供。比如,多程序读取一个配置文件时,建议配置文件时,建议配置文件封装成对象。会方便操作其中的数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的。 单例模式的作用 简单说来,单例模式(也叫单件模式)的 阅读全文
posted @ 2018-09-17 14:09 小兵1985 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 在阎宏博士的《JAVA与模式》一书中开头是这样描述策略(Strategy)模式的: 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 策略模式的结构 策略模式是对算法的包装, 阅读全文
posted @ 2018-09-12 16:59 小兵1985 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 1、初步认识 观察者模式的定义: 在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。 大白话: 其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。 2、这个模式的结构图 3、可以看到,该模式包含四个角色 抽象被观 阅读全文
posted @ 2018-09-12 11:02 小兵1985 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 1. volatile 以上代码尝试实现单例模式,但存在严重的线程安全风险。Java Memory Model定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变 阅读全文
posted @ 2018-09-11 17:31 小兵1985 阅读(682) 评论(0) 推荐(0) 编辑
摘要: java.util.concurrent.ExecutorService接口提供了许多线程管理的方法 有了以上方法,便可以基于此接口实现线程池的各种功能(例如java.util.concurrent.ThreadPoolExecutor/java.util.concurrent.ScheduledT 阅读全文
posted @ 2018-09-11 16:53 小兵1985 阅读(1609) 评论(0) 推荐(0) 编辑