![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 69
Java基础
汐梦聆海
過去を捨てなくては 未来の場所がない
展开
-
volatile关键字的作用
在说volatile关键字之前,首先要了解一下java内存模型JMM。JMM(Java Memory Model)JMM目的是为了屏蔽各种硬件和操作系统之间的内存访问差异,从而让JAVA程序在各种平台对内存的访问一致。JMM规定了所有的变量都存储在主存中,每个线程都有自己独立的工作空间,线程对变量的操作必须先从主存中读取到自己的工作内存中然后再进行操作,最后回写回主存。(值得注意的是,每一个线程对应由一个CPU来执行,CPU和主存之间的速度是有差异的,因此每个线程的工作内存有点相当于缓存cache的功原创 2021-12-03 15:45:15 · 463 阅读 · 1 评论 -
synchronized和Lock实现生产者消费者
synchronized实现生产者消费者:public class ProducerConsumer2 { public static void main(String[] args) { Data2 data = new Data2(); new Thread(()->{ for(int i = 0; i < 20; i++) { try { data.原创 2021-11-08 16:19:51 · 208 阅读 · 0 评论 -
浅谈JVM虚拟机
JVM是用来执行字节码文件(.class)的虚拟机,运作与操作系统之上。由于可以将jvm看作安装在操作系统上的软件,因此Java编写的程序可以在不同的操作系统上运行,因为编译后的字节码与平台就无关了,只需要在不同的操作系统上安装一个对应版本的 jvm 虚拟机。JVM大致分为如上图所示的三个部分:类加载子系统(ClassLoader);运行时数据区(包括方法去、堆、JVM栈、程序计数器 和 本地方法栈);执行引擎(JIT编译器:对热点数据进行二次编译,将字节码指令变成机器指令,将机器指令存放在方法原创 2021-10-23 11:17:46 · 769 阅读 · 0 评论 -
Java静态代理与动态代理
先粘贴一篇大佬的博文 「Java动态代理作用是什么」,本文是对其学习笔记。代理(Proxy)是一种设计模式,通过代理对象来访问目标对象,目的是在目标对象的基础上进行增强,例如增加一些额外的功能。Java中的代理主要分为静态代理和动态代理。静态代理为每一个类都编写一个对应的代理类,两个类都实现同样的接口。在创建一个代理对象的时候,需要向其构造器中塞入一个目标对象,然后在代理对象的方法内部调用目标对象的同名方法(并可以加入一些额外的功能)。如下图所示:可见 代理对象=目标对象+增强代码(即上图中的打原创 2021-08-09 16:28:39 · 208 阅读 · 0 评论 -
最简单的Java反射机制
Java中非常有特点的一个机制就是「反射」。反射可以理解为与正射相对立,正射就是我们知道一个类的作用,通过实例化一个实例对象,直接调用其方法。例如定义如下一个Orange类:public class Orange { private int price; public String name; public void setPrice(int price) { this.price = price; } public int getPric原创 2021-08-06 11:35:25 · 213 阅读 · 0 评论 -
Java中型参是否会改变实参
Java在进行参数传递的时候和c++不一样,并没有显式指定传递的是参数的值还是引用,所以通过下面一个程序可以直观得出一些结论:public class core { public static void main(String[] argv) { int a = 3; String b = "abc"; int[] c = {1,2,3,4,5}; Integer d = 3; A e = new A(5);原创 2021-08-05 10:23:35 · 233 阅读 · 0 评论