10 2019 档案

摘要:线程封闭 在多线程的环境中,我们经常使用锁来保证线程的安全,但是对于每个线程都要用的资源使用锁的话那么程序执行的效率就会受到影响,这个时候可以把这些资源变成线程封闭的形式。 1、栈封闭 所谓的栈封闭其实就是使用局部变量存放资源,我们知道局部变量在内存中是存放在虚拟机栈中,而栈又是每个线程私有独立的, 阅读全文
posted @ 2019-10-22 22:29 张小云的博客 阅读(1545) 评论(0) 推荐(0)
摘要:1、线程状态及切换 Java中的线程有六种状态,使用线程Thread内的枚举类来实现,如下,我对每个状态都进行了一定的解释。 public enum State { /** 表示一个线程还没启用(即未调用start方法)*/ NEW, /** * JVM中执行的线程都是处于这个状态的,但是处于这个状 阅读全文
posted @ 2019-10-17 23:37 张小云的博客 阅读(14971) 评论(0) 推荐(1)
摘要:1. 指令重排序 指令重排序分为三种,分别为编译器优化重排序、指令级并行重排序、内存系统重排序。如图所示,后面两种为处理器级别(即为硬件层面)。 编译器优化重排序:编译器在不改变程序执行结果的情况下,为了提升效率,对指令进行乱序的编译。例如在代码中A操作需要获取其他资源而进入等待的状态,而A操作后面 阅读全文
posted @ 2019-10-15 21:43 张小云的博客 阅读(2655) 评论(0) 推荐(4)
摘要:本文的内存模型只写虚拟机内存模型,物理机的不予描述。 一、先谈Java的运行时区域(非内存模型) 在Java(1.8版本之前,更准确的是1.7版本之前,因为1.7的时候常量池已经被移到堆中了)中,虚拟机将运行时区域分成6种,如图: 程序计数器:用来记录当前线程执行到哪一步操作。在多线程轮换的模式中, 阅读全文
posted @ 2019-10-09 23:24 张小云的博客 阅读(1301) 评论(0) 推荐(1)