![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
chaoliu_lc
这个作者很懒,什么都没留下…
展开
-
JVM的内存结构
JVM的内存结构式是什么样的 % 多线程共享 Java堆 方法区: - 存放已被虚拟机加载的类信息、常量、静态变量、及时编译器编译后的代码等数据。 - 同时包含运行时常量池,用于存放编译期生成的各种字面量和符号引用。 当前线程独享 Java栈:通常存放基本数据类型和对象的引用; 本地方法栈:与虚拟机栈(Java栈)作用很相似,区别是虚拟机栈为虚拟机执行java方法服务,而本地方法栈则是为虚拟机用到的Native方法服务; 程序计数器:当前线程所执行指令的行号指示器 内存溢出和内存泄露的区别 %原创 2020-08-20 23:23:20 · 159 阅读 · 0 评论 -
wait和sleep
为什么wait方法在object类中,sleep方法在Thread类中 % sleep()是让某个线程暂停运行一段时间,其控制范围是由当前线程决定,也就是说,在线程里面决定.好比如说,我要做的事情是 “点火->烧水->煮面”,而当我点完火之后我不立即烧水,我要休息一段时间再烧.对于运行的主动权是由我的流程来控制. 而wait(),首先,这是由某个确定的对象来调用的,将这个对象理解成一个传话的人,当这个人在某个线程里面说"暂停!",也是 thisOBJ.wait(),这里的暂停是阻塞,还是原创 2020-08-20 23:22:21 · 165 阅读 · 0 评论 -
volatile的理解
介绍一下和volatile相关的内存模型概念 % 内存的读写速度比CPU执行指令的速度慢很多 程序运行过程中,需要先从主存复制到CPU的高速缓存中,运算结束后,再刷新到主存中 单线程执行i=0, i=i+1不会出错,多线程,可能造成i最后还是1。 硬件上有2种解决方式:上锁和缓存一致性协议(volatile) 缓存一致性:其他CPU需要读取这个变量时,发现自己缓存中缓存该变量的缓存行是无效的,那么它就会从内存重新读取。 介绍一下并发编程常见的问题 % 要想并发程序正确地执行,必须要保证原子性、可见性以原创 2020-08-20 23:20:21 · 318 阅读 · 0 评论