Android知识Java学习笔记

java并发编程实战笔记(部分实战未看,老旧章节跳过)

2017-06-07  本文已影响1388人  何时夕

本文首发于微信公众号——世界上有意思的事,搬运转载请注明出处,否则将追究版权责任。微信号:a1018998632,交流qq群:859640274

终于把这本经典的Java并发书看完了,虽然之前看的Thinking in Java和Effective Java里面都有并发的章节,但是这本书讲的更加深入,并发是Java程序员抛不开的一个话题,所以看一看这本书对我们是极其有帮助的。当然这本书写了挺久的,里面有些东西可能落伍了,比如说GUI编程。所以我认为用处不大的章节都选择性跳过了。还有就是在TIJ和EJ里面讲到过的内容也跳过了,没看过前面两本书的同学可以看看我略过的章节。最后就是有几个实战内容,感觉目前我的层次还达不到那么高,写起来可能体会不深就放一放,等工作了一段时间之后在回过头来看看,加深感悟。

线程安全性

1.什么是线程安全

2.原子性

当一个对象被多线程使用了,而我们用一个int计算这个对象被调用了多少次,此时这个对象就是非线程安全。因为int的递增操作并不是原子性的,可能int在一个线程递增了一半,该对象就切换到了另一个线程中运行了,此时该对象就会产生与我们预期不符的行为。

3.加锁机制

我们都知道java中有原子变量,那么是不是说对于一个类,我们只需要把所有的域都变成原子变量,这个类就是线程安全的呢?很显然并不是,我们在2中提到了竞态条件,当一系列原子变量的操作是前后关联的,那么这一系列的操作就是竞态条件,此时我们如果不进行处理,那么这个类就不是线程安全的

对象的共享

同步不仅能实现原子操作,同步还有一个重要的方面就是内存可见性的实现。内存可见性表示,在一个共享变量被修改了之后,其他线程能够立即观察到该变量的修改后的值。如果不同步的话这一点是做不到的。

1.可见性

2.发布与逸出

3.线程封闭

4.不变性

5.安全发布

对象组合

1.设计线程安全的类

2.实例封闭

3.线程安全性的委托

基础构建模块

1.同步容器类

2.并发容器

3.阻塞队列和生产者消费者模式

4.阻塞方法和中断方法

5.同步工具

6.构建高效可伸缩的结果缓存

任务执行

1.在线程中执行任务

2.Executor框架

取消与关闭

1.任务取消

2.停止基于线程的服务

3.处理非正常的线程终止

4.JVM关闭

避免活跃性危险

1.死锁

2.死锁的避免和诊断

3.其他活跃性危险

性能与可伸缩性

1.线程引入的开销

2.减少锁的竞争

显式锁

1.Lock和ReentrantLock

2.公平性

3.读写锁

原子变量与非阻塞同步机制

1.锁的劣势

2.硬件对并发的支持

3.原子变量类

4.非阻塞算法

什么是内存模型

不贩卖焦虑,也不标题党。分享一些这个世界上有意思的事情。题材包括且不限于:科幻、科学、科技、互联网、程序员、计算机编程。下面是我的微信公众号:世界上有意思的事,干货多多等你来看。

世界上有意思的事
上一篇 下一篇

猜你喜欢

热点阅读