1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-07-20 03:13:00 +08:00
Java-Interview-Guide/docs/java/多线程系列.md
2019-03-25 17:19:36 +08:00

70 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> ## 多线程系列文章
下列文章,我都更新在了我的博客专栏:[Java并发编程指南](https://blog.csdn.net/column/details/20860.html)。
1. [Java多线程学习Java多线程入门](http://blog.csdn.net/qq_34337272/article/details/79640870)
2. [Java多线程学习synchronized关键字1](http://blog.csdn.net/qq_34337272/article/details/79655194)
3. [Java多线程学习synchronized关键字2](http://blog.csdn.net/qq_34337272/article/details/79670775)
4. [Java多线程学习volatile关键字](http://blog.csdn.net/qq_34337272/article/details/79680771)
5. [Java多线程学习等待/通知wait/notify机制](http://blog.csdn.net/qq_34337272/article/details/79690279)
6. [Java多线程学习线程间通信知识点补充](http://blog.csdn.net/qq_34337272/article/details/79694226)
7. [Java多线程学习Lock锁的使用](http://blog.csdn.net/qq_34337272/article/details/79714196)
8. [Java多线程学习并发编程中一些问题](https://blog.csdn.net/qq_34337272/article/details/79844051)
9. [Java多线程学习线程池与Executor 框架](https://blog.csdn.net/qq_34337272/article/details/79959271)
> ## 多线程系列文章重要知识点与思维导图
### Java多线程学习Java多线程入门
![](https://user-gold-cdn.xitu.io/2018/8/4/16504e0cb6bac32e?w=758&h=772&f=jpeg&s=247210)
### Java多线程学习synchronized关键字1
![](https://user-gold-cdn.xitu.io/2018/8/4/16504e245ceb3ea9?w=1028&h=490&f=jpeg&s=203811)
注意:**可重入锁的概念**。
另外要注意:**synchronized取得的锁都是对象锁而不是把一段代码或方法当做锁。** 如果多个线程访问的是同一个对象哪个线程先执行带synchronized关键字的方法则哪个线程就持有该方法那么其他线程只能呈等待状态。如果多个线程访问的是多个对象则不一定因为多个对象会产生多个锁。
### Java多线程学习synchronized关键字2
![思维导图](https://user-gold-cdn.xitu.io/2018/8/4/16504e3d98213324?w=1448&h=439&f=jpeg&s=245012)
**注意:**
- 其他线程执行对象中**synchronized同步方法**(上一节我们介绍过,需要回顾的可以看上一节的文章)和**synchronized(this)代码块**时呈现同步效果;
- **如果两个线程使用了同一个“对象监视器”synchronized(object),运行结果同步,否则不同步**.
**synchronized关键字加到static静态方法**和**synchronized(class)代码块**上都是是给**Class类**上锁,而**synchronized关键字加到非static静态方法**上是给**对象**上锁。
数据类型String的常量池属性:**在Jvm中具有String常量池缓存的功能**
### Java多线程学习volatile关键字
![volatile关键字](https://user-gold-cdn.xitu.io/2018/8/4/16504e4ab69d8d58)
**注意:**
**synchronized关键字**和**volatile关键字**比较
### Java多线程学习等待/通知wait/notify机制
![本节思维导图](https://user-gold-cdn.xitu.io/2018/3/25/1625d2a9188ec021?w=1254&h=452&f=jpeg&s=229471)
### Java多线程学习线程间通信知识点补充
![本节思维导图](https://user-gold-cdn.xitu.io/2018/8/4/16504e618d6886c5?w=1146&h=427&f=jpeg&s=220573)
**注意:** ThreadLocal类主要解决的就是让每个线程绑定自己的值可以将ThreadLocal类形象的比喻成存放数据的盒子盒子中可以存储每个线程的私有数据。
### Java多线程学习Lock锁的使用
![本节思维导图](https://user-gold-cdn.xitu.io/2018/3/27/1626755a8e9a8774?w=1197&h=571&f=jpeg&s=258439)
### Java多线程学习并发编程中一些问题
![思维导图](https://user-gold-cdn.xitu.io/2018/4/7/162a01b71ebc4842?w=1067&h=517&f=png&s=36857)
### Java多线程学习线程池与Executor 框架
![](http://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-12-14/86510659.jpg)