java多线程的特性

java线程安全指的是什么?有三个指标java

1.有序性程序员

2.原子性面试

3.可见性安全

下面一个一个的说:顺序是从简单到复杂性能优化

1.所谓的有序性就是指程序员写的源文件和计算机读取的编译后的class文件的语句的顺序是一致的。栗子就不举了。好吧当我写到“不举”的时候,有一种很污的画面浮如今脑海里面。总之有序性就是指计算机执行代码的时候和程序员写代码的逻辑是同样的。那位看官问了,还能不同吗?万能的计算机在编译代码的时候认为他会对你写的代码进行优化,好比说臭名昭著的指令重排序。多线程

2.原子性并发

这个指的是一组代码语句的了,对于一组代码要么所有成功,要么所有失败,不会有中间状态。我特么的今天早晨去面试,鬼打墙了,多线程和事务在我脑子里面打架了,shit,因此我如今在这里写这编博客,为的是深刻理解一下多线程的特性,fuck.性能

常见的问题就是read --modify--write.vilitile的字段可以知足的是可见性,可是不能知足的是原子性。我想紧紧地记住。优化

3.可见性线程

多个线程共同访问一个数据的时候,一个线程对于该数据的修改应该马上对其余线程可见。

年纪大了,并且好久好久没有面试了,所谓的将军百战死,壮士十年归吧,过久没有上战场的人,听到枪声浑身发抖说的就是我,今天去面试丢人丢大发了。这么基础的问题都忘记了,很久很久没有看这方面的知识了。若是你不用的话真的会忘记黎明的天空还会有一颗金星。

理解着记忆就是:

当我写下上面那句话的时候个人脑海里还在有事务的呼唤,为何?fuck!

程序的并发安全性有多是一句的,有多是多个语句组合的,因为计算机自高自大自满的特性,当你把源码教给他的时候,若是补叮嘱两句的话他会自做主张的进行重排序,所谓的性能优化。因此第一个特性就是有序性了;

因为cpu cache mainMemory中间存在着时间差,那么修改以后的数据没法马上刷新主存,那么问题就来了必需要消除这种延时,因此咱们要保证他的可见性;

而原子性呢就是要求他的一组修改不能有一部分红功一部分失败,实际上是2的组合~~ act as one sentense.

 

来个硬广:本人的我的博客

http://httpshome.com

相关文章
相关标签/搜索