中级进阶——线程与并发
文章平均质量分 53
stillearn
这个作者很懒,什么都没留下…
展开
-
线程基础方法
线程的6个状态线程的状态由定义在Thread类内部的一个枚举Thread.State来表述,总共有6种状态,分别是NEW(新生)、RUNNABLE(可运行)、BLOCKED(阻塞)、WAITING(等待)、TIMED_WAITING(限时等待)、TERMINATED(停止)。**NEW** 此时线程被创建,但还不可运行。**RUNNABLE** 线程对象被调用了start()方法,此时线程调原创 2015-04-06 23:44:35 · 473 阅读 · 0 评论 -
Java内存模型(一):运行时数据区分类
程序计数器 可理解为Java虚拟机在执行字节码时的行号指示器。 线程私有(每个线程都有自己的程序计数器,这样在线程切换后才能恢复正确的执行位置)。 字节码解释器就是通过改变这个计数器的值,来选取下一条将要执行的指令。如果正在执行的是java方法,这个计数器记录的是正在执行的字节码指令地址,如果是native方法,其值为空。Java虚拟机栈 即我们常说的栈,描述的是java方法执行时的内存模型原创 2015-04-13 00:39:06 · 838 阅读 · 0 评论 -
Java内存模型(三):long和double变量的特殊规则
在上篇学习心得中整理了关于Java内存模型对变量的8种操作,它们是lock、unlock、read、load、use、assign、store、write,这些操作对于非long类型和非double类型的变量的操作都是原子的。对于64位的非volatile修饰的long和double型数据,Java内存模型允许虚拟机对其操作分为2次32位的操作,允许Java虚拟机不保证read、load、store原创 2015-04-21 00:53:43 · 1123 阅读 · 0 评论 -
Java内存模型(二):主内存与工作内存的交互
相关名词解释我们将会用到几个名词,先来搞清楚这几个名词的含义。 - Java内存模型 Java虚拟机规范中定义的Java内存模型,其目标是屏蔽各种硬件和操作系统的内存访问差异,实现Java程序在各种平台下都能达到一致的内存访问效果,具体体现在其在程序中遵循的各种变量(包含实例字段、静态字段、不变字段和数组对象)的访问规则(可以理解为将变量从内存中取出和存储到内存的底层细节)。Java原创 2015-04-19 23:47:34 · 2850 阅读 · 1 评论 -
ThreadLocal
什么是ThreadLocal,它能做什么ThreadLocal是Jdk1.2开始提供的一种线程封闭的技术,这个类全包路径 java.lang.ThreadLocal。他使得每一个线程都能拥有ThreadLocal保护的变量的独立副本,在线程内部使用变量时,就如同在方法内部使用局部变量一样不比担心多线程环境下的并发安全性。它常用于防止可变的单实例变量或者全局变量进行共享。原创 2015-05-02 03:33:11 · 406 阅读 · 0 评论 -
Java内存模型(四):volatile变量的特殊规则
为了便于理解的一致性,可以先查看前面的Java内存模型(二)。volatile变量的两种特性内存可见性禁止指令重排序volatile变量的特殊规则每次使用前从主内存读取每次修改后立即同步回主内存避免指令重排序性能使用场景根据volatile变量的特性,在不符合下面两个规则的情况下,仍旧需要通过加锁(隐式或者显式)来保证原子性。 1. 运算结果不依赖当前值,或者只有单一线程对变量进行原创 2015-04-27 01:15:26 · 727 阅读 · 0 评论 -
Java内存模型(五):原子性、可见性与有序性
Java内存模型是围绕着在并发过程中如何处理原子性、可见性和有序性来建立的。未完待续。。。。。。。。。。。。。原创 2015-05-02 01:03:37 · 435 阅读 · 0 评论