java
风影2019
保持平和的心态,坚持学习!
展开
-
JVM总结思维导图
原创 2020-03-19 10:09:54 · 186 阅读 · 0 评论 -
java的CAS机制
CAS是java中的一种乐观锁实现方式,它能在很多场景下保证线程安全的同时有着很多的性能。先看一个例子package cas;public class CASdemo { public static int count=0; public static void main(String[] args) { for(int i=0;i<2;i++) { new Thr...原创 2019-09-22 09:52:39 · 353 阅读 · 1 评论 -
java迭代器
在java中迭代器的使用是非常常见的,它可以让我们在遍历某种数据结构的序列时,无需关注它的底层结构。它类似于指针,可以遍历整个数据结构序列。在java中,我们最常使用Iterator接口来实现迭代器,它的源码如下public interface Iterator { boolean hasNext();//判断容器是否还有可以访问的元素 Object next();//迭代器向...原创 2019-09-20 21:58:42 · 166 阅读 · 0 评论 -
hashmap和ConcurrentHashMap详解(对比1.8前后)
hashmapHashMap是一个用于存储Key-Value键值对的集合,每一个键值对对象叫做Entry,这些键值对(entry)储存在一个数组中。对于hashmap,我们最常用的就是get和put方法,那么这两个方法具体做了什么事情?put方法: 比如调用hashmap.put(name,tang); 首先会调用hash函数来决定键值对插入数组的索引,假设算出来的索引为3.但是当多次pu...原创 2019-09-05 22:17:14 · 607 阅读 · 0 评论 -
JAVA线程池的使用
线程池我们一般使用线程,需要的时候就去创建一个。但是当并发量变高的时候,频繁的创建销毁线程必然会有很大的内存资源开销。所以我们使用了线程池。首先介绍ThreadPoolExecutor类,它是线程池的核心创建线程池的方法: public ThreadPoolExecutor(int corePoolSize, int maximu...原创 2019-08-31 19:21:14 · 136 阅读 · 0 评论 -
JVM(二)垃圾回收机制
在java中,由gc负责垃圾对象的回收,下面介绍它怎么完成这个工作的。什么对象可以判定为垃圾?没有被任何其他对象引用的对象 怎么判断哪些对象是垃圾?引用计数算法,判断对象的引用数量,每个对象实例都有一个引用计数器,当它被引用时+1,完成引用时-1. 这种方法的优点是:执行效率高,程序执行受影响较小。缺点是:无法解决循环引用的问题,会导致内存泄漏(很致命,已经被摒弃)可达性...原创 2019-08-28 20:20:18 · 163 阅读 · 0 评论 -
JVM(一)内存空间分配
什么是JVM内存?一般java文件被编译成.class文件之后,会由类加载器加载进内存中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存。JDK8的内存空间大概有以下几部分jdk7以后字符串常量池就由方法区移到了堆中首先方法区:方法区是线程共享的区域,它一般用于储存与类相关的...原创 2019-08-25 15:50:16 · 578 阅读 · 0 评论 -
类加载器及加载过程
什么是类加载器,它是干什么的?当我们把一个类编译后的.class文件放入内存空间,这个过程就是由类加载器完成。JVM预定义有三种类加载器,当一个 JVM启动的时候,Java开始使用如下三种类加载器。1.Bootstrap ClassLoader 它是根类加载器,由c++编写,JVM启动时加载它,然后它加载另外两个类加载器,它还会加载$JAVA_HOME中jre/lib/rt.jar里所有的cl...原创 2019-08-13 20:35:34 · 175 阅读 · 0 评论 -
volatile的作用
volatile的作用1.它能保证多线程时共享变量的可见性。2.禁止指令重排序首先要想保证线程安全,就必须保证两个必要条件互斥访问和可见性互斥访问:同一时间只能保证一个线程访问某一资源。可见性:在多线程环境中,一个线程修改了某个共享资源,对于其他线程来说可见所以可以知道volatile不一定能保证线程安全首先了解一下java内存模型(JMM)在JMM中,所有的变量都放在了主存中,每...原创 2019-07-28 11:40:20 · 159 阅读 · 0 评论 -
java中多线程实现方法分析
多线程的两种实现方法分析什么是进程,线程?进程是一个系统分配资源的基本单位。一个应用程序被启动,就会被加载进入内存(cpu),此时在内存中的应用程序就是进程,一个应用程序可以有多个进程同时运行在内存中。在早期的系统中 ,只有进程,但从创建进程到不同进程之间的切换所花费的资源开销很大,所以为了降低这种开销,我们引入了线程的概念。线程是系统独立运行的单元,它在创建,不同线程之间切换的开销都远小于进...原创 2019-07-23 12:26:05 · 94 阅读 · 0 评论 -
synchronized和ReentrantLock浅析
线程安全简单的说,多个线程同时操作一个数据就有可能造成数据不一致,这就是线程不安全。线程安全发生的前提:1.在多线程环境中2.存在共享数据只要在这种情况下,多个线程同时修改一个共享数据就可能存在线程安全问题。看一下demo代码package test;public class ThreadTest implements Runnable { static int count=0...原创 2019-07-24 13:26:13 · 124 阅读 · 0 评论