摘要:
组成部分 类的加载器 运行时数据区域 执行引擎 本地库接口 作用 首先通过类加载器 ClassLoader 将java代码转为字节码。 运行时数据区 Runtime Data Area 再把字节码加载到内存中。 而字节码只是JVM的一套指令规范,并不能直接交给底层操作系统执行。需要特定命令解析器执行 阅读全文
posted @ 2025-05-17 21:50
kuki'
阅读(13)
评论(0)
推荐(0)
摘要:
堆运行时确定内存大小,栈编译时即可确定内存大小 堆内存由用户管理(java中由jvm管理),栈内存会被自动释放。 栈实现方式采用数据结构中的栈实现,具有先进后出的顺序特点,堆为一块一块的内存。 栈由于其实现方式,在分配速度上比堆快的多,分配一块栈内存不过是简单的移动一个指针。 栈为线程私有,而堆为线 阅读全文
posted @ 2025-05-17 21:38
kuki'
阅读(9)
评论(0)
推荐(0)
摘要:
BIO(Blocking I/O),NIO(Non-blocking I/O), AIO(Asynchronous I/O) (异步)是java中用于处理不同I/O操作的不同模型。 1. 概念 BIO (Blocking I/O) BIO(Blocking I/O)BIO指的是同步阻塞进行I/O操作 阅读全文
posted @ 2025-05-17 21:28
kuki'
阅读(112)
评论(0)
推荐(0)
摘要:
volatile被誉为 轻量级的synchronized,也是java编程中比较重要的一个关键字。 和synchronized不同, volatilze是一个变量修饰符,只能用来修饰变量 无法修饰方法及代码块。 被volatile修饰的共享变量,就具有了以下两点特性 保证了不同线程对该变量操作的内存 阅读全文
posted @ 2025-05-17 20:58
kuki'
阅读(25)
评论(0)
推荐(0)
摘要:
ReentrantLock 是java.util.concurrent.locks包下 Lock接口的一个具体实现 可重入性: synchronized和ReentrantLock都是可重入的,即同一个线程可以多次获取同一个锁 公平性 synchronized的锁是非公平的,即锁的获取顺序是不确定的 阅读全文
posted @ 2025-05-17 17:41
kuki'
阅读(4)
评论(0)
推荐(0)
摘要:
Java中,synchronized是一种关键字,用于实现线程同步 当一个方法/代码块被synchronized修饰时,它将成为一个临界区,同一时刻只能由一个线程访问,其他线程必须等待当前线程退出临界区才进入。确保多个线程在访问共享资源时不会产生冲突。 synchronized可用于方法/代码块。 阅读全文
posted @ 2025-05-17 17:12
kuki'
阅读(12)
评论(0)
推荐(0)
摘要:
1. 阻塞同步 使用锁实现,具体采用什么锁,有两种选择: 内置锁也就是synchronized 关键字 JUC下具体锁的实现 2. 非阻塞同步 使用锁带来的问题 频繁的线程阻塞、唤醒操作以及用户态,内核态的切换带来的性能问题。 可能这些额外的操作带来的时间消耗远大于线程自身业务执行时间 所以引入非阻 阅读全文
posted @ 2025-05-17 16:47
kuki'
阅读(6)
评论(0)
推荐(0)

浙公网安备 33010602011771号