参考文献《java编程思想4》
根据我自己的理解,并发就是使用多线程来达成一个目的,之所以用多线程,是因为多个人干活总比一个人干活干的多,干的快,但是速度快的同时又会出现一些问题,这就是老生常谈的并发问题,下面来整理下我理解中并发这一块需要去学习理解的几大块内容。
一 多线程的几种实现方式
1 继承Thread类,重写run方法
2 实现Runnable接口,重写run方法
3 通过Callable和Future Task创建线程
4 通过线程池创建
二 解决并发问题的方法
1 使用synchronized关键字
2 显示使用java.util.concurrent.locks包下的lock类
3 利用原子性(但是书中说这个方法如果你不是并发大神还是选择放弃吧)
4 使用java.util.concurrent.atomic包下的原子类来解决特定的并发问题
5 使用线程本地存储--ThreadLocal(这种方式是根除了变量的共享)
6 使用GAS算法,想了解的请看下我的另一篇博客concurrentHashMap源码解析带来的一系列问题(CAS,volatile ,current包,atomic包)
三 线程间相互协作的集中方式
1 wait() 与notify()/ notifyAll()
2 condition对象的await()与signal()/signalAll()方法
3 java.util.concurrent包下的阻塞队例如ArrayBlockingQueue等
这三个问题是我目前认为的java并发编程中需要掌握的知识点,至于具体的代码和应用场景大家可以自行搜索。