自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 Java与线程安全

线程安全:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者调用方进行其他的协调操作,调用这个对象的行为都可以获得正确的结果,则该对象是线程安全的。Java语言中的线程安全 1. 不可变不可变的对象一定是线程安全的,只要其被正确地创建出来。基础数据类型只要声明为final就是不可变的,对象可以通过将自己的所有带有状态的变量都声

2018-01-13 15:41:02 275

原创 Java与线程

线程的实现1. 使用内核线程(Kernel-Level Thread)实现内核线程是由操作系统内核直接支持的线程,由内核完成线程切换,通过操纵调度器进行调度,内核负责将线程任务映射到处理器上。程序并不会直接使用内核线程,而是使用其提供的高级借口,即轻量级进程(Light Weight Process)。因为LWP和KLT是1:1的关系,所以这种实现被称为一对一的线程模型。这一实现方式的

2018-01-13 11:54:15 273

原创 Java先行发生(happens-before)原则

Java语言中存在一个“先行发生”原则,可以用于判断线程是否安全,数据是否存在竞争。定义: 如果操作A先行发生于操作B,那么在操作B之前,操作A产生的影响能被操作B观察到。Java内存模型存在以下先行发生关系,无须额外的同步操作。而不满足以下规则的两个操作,就没有顺序性保障,虚拟机可以对其进行指令重排序。程序次序规则(Program Order Rule):在一个线程内,按照代码顺序(

2018-01-12 17:22:31 588

原创 Java volatile关键字

在面试中,经常会被问到volatile关键字的作用和原理,故而整理出本篇文章进行说明。(提示:阅读本文需要具备内存操作相关知识,可以看这里)volatile是Java保留的一个关键字,可以用于修饰变量,有以下两个语义:1. 保证此变量对所有线程的可见性Java内存模型保证了对于volatile修饰的变量,load和use操作必须连续出现,assign和store操作必须连续出现。这

2018-01-11 21:55:55 399

原创 Java八种内存操作

对于并发环境下的线程工作内存与主内存同步实现, Java内存模型定义了8种内存操作来完成:1. lock:主内存操作,锁定变量,标识其为线程独占的状态。2. unlock:主内存操作,解锁变量,将其从线程独占的状态中释放出来。3. read:主内存操作,读取变量到工作内存。4. load:工作内存操作,将读取到的变量赋值给工作内存中的变量副本。5. use:工作内存操作,将变量

2018-01-11 20:37:55 4317

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除