随笔分类 -  java

摘要:GC(Garbage Collection),java中的垃圾回收机制。 Java虚拟机中进行垃圾回收的场所有两个,一个是堆,一个是方法区。方法区通常被称为永久代,垃圾回收的频率较低,速度也较慢。(JDK1.8之后取消永久代改为Metaspace。元空间并不在虚拟机中,而是使用本地内存) 判断是否需 阅读全文
posted @ 2019-05-08 23:08 有梦想的人不睡觉s 阅读(1966) 评论(0) 推荐(0)
摘要:JVM全称java虚拟机。HelloWorld.java(源代码) ->Hello.class->010101(2进制编码),class文件和2进制编码需要在JVM中运行。 jvm运行时的数据区: 蓝色的是数据区,绿色的是指令区。 程序计数器:一块较小的内存空间,指向当前线程所执行的字节码指令的地址 阅读全文
posted @ 2019-05-07 22:52 有梦想的人不睡觉s 阅读(284) 评论(0) 推荐(0)
摘要:Java有四种实现多线程的方式: 1).继承Thread类 2).实现Runnable接口 3).实现Callable接口 4).使用线程池 前三种实现方式的代码: line26,27行当传入一个Runnable target参数给Thread后,Thread的run()方法就会调用target.r 阅读全文
posted @ 2019-05-05 23:06 有梦想的人不睡觉s 阅读(864) 评论(0) 推荐(0)
摘要:记录一下公平锁,非公平锁,可重入锁(递归锁),读写锁,自旋锁的概念,以及一些和锁有关的java类。 公平锁与非公平锁: 公平锁就是在多线程环境下,每个线程在获取锁时,先查看这个锁维护的队列,如果队列为空或者自身就是等待队列的第一个,就占有锁。否则就加入到等待队列中,按照FIFO的顺序依次占有锁。 非 阅读全文
posted @ 2019-04-27 23:27 有梦想的人不睡觉s 阅读(232) 评论(0) 推荐(0)
摘要:java中常见的集合类大部分是非线程安全的,在多线程情况下会报并发修改异常(ConcurrentModificationException) 并发下的ArrayList类: 解决办法:使用集合的工具类Collections包中的synchronizedList(), 或者直接使用java.util. 阅读全文
posted @ 2019-04-25 21:55 有梦想的人不睡觉s 阅读(447) 评论(0) 推荐(0)
摘要:CAS(Compare-and-Swap),即比较并替换,java并发包中许多Atomic的类的底层原理都是CAS。 它的功能是判断内存中某个地址的值是否为预期值,如果是就改变成新值,整个过程具有原子性。 具体体现于sun.misc.Unsafe类中的native方法,调用这些native方法,JV 阅读全文
posted @ 2019-04-23 23:12 有梦想的人不睡觉s 阅读(6578) 评论(0) 推荐(2)
摘要:volatile是java虚拟机提供的轻量级的同步机制 JMM(Java内存模型)是围绕着并发编程中原子性、可见性、有序性这三个特征来建立的 原子性:一个操作或多个操作要么全部执行完成且执行过程不被中断,要么就不执行。 可见性:当多个线程同时访问同一个变量时,一个线程修改了这个变量的值,其他线程能够 阅读全文
posted @ 2019-04-22 22:46 有梦想的人不睡觉s 阅读(1202) 评论(0) 推荐(1)