Java基础
文章平均质量分 81
zsf_lance
努力努力再努力~
展开
-
java线程(三)syschronized同步原理
作用 保证原子性(同步代码中的执行不受其他线程干扰),可见性(同步代码中修改后的数据,退出同步后,对其他线程立即可见),有序性(多条线程有序执行) 用法修饰静态方法,相当于对类的class对象加锁。 修饰实例方法,相当于对当前实例对象加锁。 同步代码块,可以自由选定加锁对象。知识点jdk1.6之前单纯通过monitor实现锁,但因为需要切换内核态执行线程阻塞和线程唤醒等调用...原创 2020-04-03 17:19:39 · 535 阅读 · 0 评论 -
java线程(二)ThreadLocal
ThreadLocal存取元素实际上是以当前threadlocal为key存储的,值为value存储到线程对象thread中的threadlocalmap中。添加元素执行结束后要remove,否则如果与线程池配合使用,会导致元素一直存在线程中被占用,如果没有再次被使用既会变成内存泄漏,如果再次使用可能会有脏数据的问题。(为什么强调线程池,因为在线程池中线程才不会回收,线程如果被回收自然不会...原创 2020-04-03 16:58:52 · 248 阅读 · 0 评论 -
java线程(四) 线程池原理
线程池作用:限制线程数,管理线程、避免频繁创建和销毁线程造成性能损耗ThreadPoolExecutor作用封装线程池的一系列逻辑,通过该类可创建线程池。构造参数corePoolSize 核心线程数,有任务时才会创建线程,一般情况核心线程不会过期,一直占用,除非调allowCoreThreadTimeOut方法设置允许过期,核心线程才会因为空闲超时而过期keepAliveTim...原创 2019-10-27 10:37:50 · 256 阅读 · 0 评论 -
java线程(五) concurrent包
1 . 原子类原子基本数据类型。AtomicInteger、AtomicLong、AtomicBoolean 支持cas设置值,自增等操作。 将基本数据类型的value设置为volatie保证可见性 AtomicInteger通过unsafe方法的compareAndSwapInt方法进行设值,AtomicLong使用unsafe的compareAndSwapLong...原创 2019-10-10 09:23:58 · 153 阅读 · 1 评论 -
java线程(一)基础知识点
1. 内存模型内存划分JMM规定了内存主要划分为主内存和工作内存两种。主内存和工作内存只是jvm规范划分的两个抽象概念,为了屏蔽不同处理器的内存处理差异制定的规范。跟JVM内存模型(堆、栈、方法区)是在不同的层次上的描述,如果要对应起来,主内存相当于对应的堆空间、元空间,工作内存对应部分栈空间,从硬件角度,主内存对应的是硬件的物理内存,工作内存对应的寄存器和cpu高速缓存。 jvm规范约定...原创 2019-09-25 17:15:20 · 158 阅读 · 0 评论 -
java常用集合类原理
以下集合讲解没有指定jdk版本默认都是jdk8ArrayList线程不安全。 基于一个Object[]数组实现,默认数组是个空数组,可以插入空数据,可以随机访问。如果要找到是否存在某个值,需要遍历数组匹配,时间复杂度是O(n)。由于通过存放的是动态数组,arrayList重写序列化方法readObject和writeObject,只序列化有值的数组位置。 add(E e)添加元素方法:...原创 2019-09-09 18:49:39 · 519 阅读 · 0 评论 -
java代理
代理的好处代码可以专心业务代码编写,与非业务代码区分开且避免编写过多重复代码,简化代码。比如事务管理、日志打印、接口监控、数据加密解密等。静态代理即编译期的代理。即创建一个代理类,代理类中创建被代理类的对象,代理类对外提供方法a调用,方法a中代理类调用被代理类的方法b,并在方法b前后加一些操作,实现代理增强效果。在编译后生成的class文件就已经是代理后的内容。缺点:不灵活,每加一...原创 2019-08-29 22:10:58 · 119 阅读 · 0 评论