破做题家
破做题家
全部文章
分类
JAVA(16)
数据库(6)
题解(1)
归档
标签
去牛客网
登录
/
注册
AaronBlog
Talk about algorithm, operating system, etc.
全部文章
(共8篇)
JAVA并发编程之volatile
JMM内存模型 在了解Volatile之前,需要先了解JMM内存模型,在前面的文章中已经做了较为详细的描述。 Volatile关键字的语义 保证可见性 被Volatile修饰过的变量被一个线程修改后,新值对其他线程而言立即可见。例如下列代码: //线程1 boolean stop = false; ...
jvm
java
并发编程
2021-04-25
1
499
JAVA并发编程之锁的类型区分
无锁 无锁即乐观锁,在上一篇博客中有介绍到。无锁是通过CAS实现的,线程认为共享区域总是读多于写,因此不会对共享区域加锁。而在需要对共享区域变量进行更新时,使用CAS操作。 自旋锁 自旋锁多线程访问共享区域的时间都很短,因此当一个线程获得了共享区的锁,其他线程在企图进入共享区时,不会进入阻塞状态,而...
jvm
java
并发编程
2021-04-25
1
445
JAVA并发编程之synchronized
synchronized介绍与使用 synchronized即是通过对代码块/普通方法/静态方法加锁以保证多线程访问共享变量区域时“串行化”。下面介绍synchronized修饰不同对象的使用与区别。 普通方法 synchronized修饰普通方***将整个对象锁住。使得对象内别的被synchron...
jvm
java
并发编程
2021-04-24
1
550
JAVA并发编程之核心概念(JMM内存模型、Happens-Before原则等)
线程安全 简单来说,线程安全是为了保证在多线程工作时,不会因为多个线程的执行顺序没有符合一定的逻辑依赖而造成意想不到的结果。《深入理解JAVA虚拟机》中对线程安全如下定义:“多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替运行,也不需要进行额外的同步,或者在调用方进行任何其他...
jvm
java
并发编程
2021-04-24
1
608
JAVA GC详解
如何识别垃圾 如何识别堆中的对象是垃圾,是GC的第一个问题,下面介绍两种算法来回答这个问题。 引用计数法 定义一个变量,如果一个对象被引用,那么该对象的引用计数+1;如果删除一个对象的引用,那么该对象的引用技术-1。如下所示Object o = new Object(); //引用o指向新创建的Ob...
jvm
java
2021-04-22
1
549
JAVA反射原理、应用
对象创建的一般流程 在讲反射之前,先描述一下在一般情况下,一个类的对象是如何创建的。如运行: Mobile m = new Mobile();根据类的加载流程我们知道: 当JVM之前未加载过Mobile类,则进入类加载过程 类加载器从磁盘上找到Mobile.class字节码文件 类加载器将字节码文...
jvm
java
2021-04-21
1
667
一个JAVA程序的运行过程(编译、加载、执行)
编辑 编辑.java文件,即源代码。 编译 由JAVA编译期将.java源代码编译成.class字节码文件,.class字节码文件才是虚拟机可执行的。 加载 得到了.class字节码文件后,当运行这个编译好的字节码文件,系统会启动一个JVM进程,从classpath路径中找到这个字节码文件,进而将其...
jvm
java
2021-04-20
1
774
JAVA运行时数据结构
程序计数器 线程执行到的字节码的行号指示器。每个线程都有一个(线程私有),原因是多线程工作的时候CPU需要在线程间切换,为了恢复线程原来执行到的位置,需要每个线程都有一个独立的计数器。 如果执行的是JAVA方法,计数器记录的是字节码的位置;如果是Native方法(即本地的、别的语言的方法),这个计数...
java
jvm
2021-04-20
2
587