排序:
默认
按更新时间
按访问量

Java与线程安全

线程安全:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者调用方进行其他的协调操作,调用这个对象的行为都可以获得正确的结果,则该对象是线程安全的。 Java语言中的线程安全 1. 不可变 不可变的对象一定是线程安全的,只要其被正...

2018-01-13 15:41:02

阅读数:39

评论数:0

Java与线程

线程的实现 1. 使用内核线程(Kernel-Level Thread)实现 内核线程是由操作系统内核直接支持的线程,由内核完成线程切换,通过操纵调度器进行调度,内核负责将线程任务映射到处理器上。程序并不会直接使用内核线程,而是使用其提供的高级借口,即轻量级进程(Light Weight Pr...

2018-01-13 11:54:15

阅读数:62

评论数:0

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

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

2018-01-12 17:22:31

阅读数:101

评论数:0

Java volatile关键字

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

2018-01-11 21:55:55

阅读数:133

评论数:0

Java八种内存操作

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

2018-01-11 20:37:55

阅读数:259

评论数:0

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