![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 76
林蜗牛snail
怕什么真理无穷,进一寸有进一寸的欢喜。
展开
-
JVM与CPU之间的联系
JVM结构图程序计数器记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。#Java 虚拟机栈每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小,在 JDK 1.4 中默认为 256K,而在 JDK 1.5+ 默认为 1M:该区域可能抛出以下异..原创 2021-05-26 23:28:20 · 17506 阅读 · 0 评论 -
Java中的 InterruptedException 异常
什么是InterruptedException异常Thrown when a thread is waiting, sleeping, or otherwise occupied, and the thread is interrupted, either before or during the activity. Occasionally a method may wish to test whether the current thread has been interrupted, and原创 2021-05-07 21:35:59 · 17572 阅读 · 0 评论 -
JVM类加载机制以及双亲委派模型
概述将.java文件编译成.class字节码文件的过程是编译期。从.class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可被虚拟机直接使用的Java类型的过程就是运行期,也就是标题所说的类加载过程。(红色框代表的就是类加载过程)具体过程『加载』->『验证』->『准备』->『初始化』->『卸载』这五个阶段的顺序是确定的,而『解析』可能为了支持Java的动态绑定会在『初始化』后才开始 上述阶段通常都是互相交叉地混合式进行的,比如会在一.原创 2021-03-08 23:15:20 · 134 阅读 · 0 评论 -
自旋锁原理及其应用场景
题外话自旋锁不是一种锁(类型),自旋锁是线程没有获取到锁时的一种等待策略。自旋锁的提出背景由于在多处理器环境中某些资源的有限性,有时需要互斥访问(mutual exclusion),这时候就需要引入锁的概念,只有获取了锁的线程才能够对资源进行访问,由于多线程的核心是CPU的时间分片,所以同一时刻只能有一个线程获取到锁。那么就面临一个问题,那么没有获取到锁的线程应该怎么办?通常有两种处理方式:一种是没有获取到锁的线程就一直循环等待判断该资源是否已经释放锁,这种锁叫做自旋锁,它不用将线程阻.原创 2021-01-25 22:55:19 · 3004 阅读 · 0 评论 -
说一说乐观锁及其使用场景
前言关于乐观锁在很多书中都有所提及,这里推荐《Java并发编程的艺术》以及《Java并发编程实战》。何为乐观锁乐观锁就是乐观的认为:每次去拿数据的时候都认为别人不会修改,觉得不值得上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。在Java中JUC包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的(CAS.原创 2020-10-11 21:29:19 · 4771 阅读 · 1 评论 -
synchronized锁优化
在jdk6以后,synchronized已经有了很大的优化,显得不再笨重,所以一般如果我们对lock的优化并不那么好的情况下,都使用synchronized是最佳选择。从 JVM 规范中可以看到 Synchonized 在 JVM 里的实现原理,JVM 基于进入和退出 Monitor 对象来实现方法同步和代码块同步,但两者的实现细节不一样。代码块同步是使用 monitorenter 和 mon...原创 2020-02-05 23:25:03 · 214 阅读 · 0 评论