![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础知识
文章平均质量分 63
Java基础知识的学习笔记
Misaki73
这个作者很懒,什么都没留下…
展开
-
JVM_Java并发_05_实现同步的方式:锁和其他方法
一些名词解析互斥同步:一个共享资源在一段时间内只有一个线程共享(1v1)(悲观策略,认为只要不占有这个共享资源,就会出问题)非阻塞同步:先操作,如何没有其他线程争用共享资源,操作成功;出现竞争那再进行补偿措施。(乐观)synchronized关键字关键词:实现互斥同步、悲观锁、非公平锁synchronized实现同步的基础:java中的每个对象都有一个内部锁。内部锁来管理试图进入synchronize方法的线程。public synchronized void method(){ method原创 2021-08-11 01:13:46 · 79 阅读 · 0 评论 -
JVM_04_线程安全
什么是线程安全?非黑即白的定义说某代码是线程安全的则它必然:1)代码本身封装了所有的必要手段保证线程安全2)调用者无需关系多线程下的调用问题3)无需实现任何措施保证多线程环节下的正确调用java的线程安全按照线程的安全程度来划分为五类1、不可变内容:final保证不可变;如果共享的是个对象,那对象自行保证其行为不会产生任何状态变化。例子:如String,枚举2、绝对线程安全就是上述非黑即白的定义方便理解的例子:java.util.Vector是线程安全的容器但是不是绝对线程安全,在原创 2021-08-08 02:27:49 · 83 阅读 · 0 评论 -
JVM_02_对象的创建
如图所示,new指令后strep 1:定位类的符号引用说明:到常量池中定位一个类的符号引用,检查这个类是否已被加载、解析、初始化过。没有就进行类加载过程,有就为对象在java堆中分配空间step 2:java堆为对象分配空间分配方式:1)指针碰撞 (垃圾回收器带空间压缩整理使得java堆规整时)2)空闲列表 (垃圾回收器不带空间压缩整理使得java堆不规整时)保证分配过程线程安全:1) 同步处理(一个线程分配时其他线程不分配):实现方式CAS(比较与交换)+失败重试2)如下图所示。在ja.原创 2021-08-07 21:52:47 · 60 阅读 · 0 评论 -
JVM_03_类的加载过程
类的加载过程step 1 加载:方法区添加访问入口1)获取字节流:通过一个类的全限定名来获取定义此类的二进制字节流;注:没有规矩从某个class文件获得,这里可以从zip获取(jar、war等);从网络获得(web Applet)2)转换字节流结构:将这个字节流代表的静态存储结构传化为方法区的运行时数据结构;3)生成方法区的访问入口:内存生成这个类的java.lang.class对象,作为方法区访问这个类各种数据的访问入口step 2 验证:验证class文件字节流信息符合约束1)文件.原创 2021-08-07 21:51:37 · 63 阅读 · 0 评论 -
JVM_01_Java内存区域
线程私有程序计术器(内存空间较小):存储内容:当前线程所执行的字节码的行号指令器,用来取下一条要执行的字节码指令。线程执行java方法,计数器记录正在执行的虚拟机字节码;本地方法则为空。注:不会发生OutOfMemoryError虚拟机栈(线程的内存模型):存储内容:如图所示,特别说明,局部变量表存储的编译可知的Java基本类型(int、float等)、对象引用(reference)、returnAddress类型(指向一条字码指令的地址);异常:StackOverflowError.原创 2021-08-07 01:44:07 · 70 阅读 · 0 评论