java多线程总结

一、创建线程的四种方式

(picture4)

https://blog.csdn.net/weixin_42582008/article/details/100677786 

二、线程的状态及影响线程状态的一些方法(线程协作)

https://blog.csdn.net/weixin_42582008/article/details/100712099

1)5种状态或6种状态

源码里是6种,那就6种吧 https://blog.csdn.net/pange1991/article/details/53860651

2)终止线程的3个方法

3)线程中断

4)等待(wait)和通知(notify)

5) 挂起(suspend)和继续执行(resume)方法

6) 等待线程结束(join)和谦让(yield)及睡眠(sleep)

7)在锁那一部分,有个condition,await(),signal(),signalAll()等

8)LockSupport的park(),unpark()方法,可以替代(5)

三、juc包中的锁

https://blog.csdn.net/weixin_42582008/article/details/100995071

主要介绍juc包中与锁相关的API和组件,以及这些组件的使用方式和实现。

1.Lock接口的简单介绍

2.同部队列器AQS

1)同步队列器的作用及在作用原理概述

2)队列同步器的实现分析

3.重入锁

4.读写锁

5.LockSupport工具

6.Condition接口

四、java并发容器

https://blog.csdn.net/weixin_42582008/article/details/101229428

1.ConcurrentHashMap的实现原理与使用

这个的原理还是得看,网上搜应该都能搜到相关博客。

2.ConcurrentLinkQueue

3.BlockingQueue

1) ArrayBlockingQueue

2)LinkedBlockingQueue

3)PriorityBlockingQueue

4)DelayQueue

5)SynchronousQueue

6)LinkedTransferQueue 

4.ConcurrentSkipListMap(跳表)

5. Fork/Join框架

6.CAS及ABA问题

五、java中的原子类

https://blog.csdn.net/weixin_42582008/article/details/101669843

1.AtomicInteger

2.无锁的对象引用:AtomicReference

3.无锁的数组 AtomicIntegerArray

4. 对象中某个字段的原子操作:AtomicIntegerFieldUpdater

AtomicStampedReference解决ABA问题

六、锁的优化及注意事项

https://blog.csdn.net/weixin_42582008/article/details/101836245

1.有助于提高锁性能的几点建议

2. Java虚拟机对锁优化所做的努力(synchrozied优化)

1) 锁偏向

2) 轻量级锁

3) 自旋锁

4) 锁消除

3 .ThreadLocal

4. 无锁

5. 死锁

1)死锁是什么

2) 死锁检测方法

3) 死锁避免的方法

4)死锁解除的方法

5)死锁必要条件

七、与并发有关的设计模式

https://blog.csdn.net/weixin_42582008/article/details/102153841

1. 单例设计模式

 2.不变模式

3.生产者-消费者模式

4.Future模式

八、线程池

https://blog.csdn.net/weixin_42582008/article/details/102080129

1.线程池的意义和概念

2. JDK对线程池的支持:Executor框架

3. 核心线程池的内部实现

4. 拒绝策略

5.自定义线程创建

6.扩展线程池

7.线程池中如何确定一个比较合适的线程数量:

8. 打印出线程池执行任务时出错的堆栈

9. 线程池的增长策略

10.阻塞队列的应用

九、synchronized

1.synchronied简述(picture7)

mutex互斥

2.synchronized用法

3.synchronized与volatile的区别:picture 6

volatile不具有原子性的例子:https://www.jianshu.com/p/f74044782927 只是多个线程都可见,但多个线程仍然可以同时修改,不具有原子性,导致错误

4.synchronized与ReentranLock区别 picture,下面链接1也有

5.底层原理

原理链接2有讲,分为同步代码块和同步方法;对synchronized的优化,是通过成为锁的那个对象的对象头进行优化的(见2,3)。

https://blog.csdn.net/zc19921215/article/details/84780335

https://www.cnblogs.com/javaminer/p/3889023.html

对象头:

https://blog.csdn.net/lkforce/article/details/81128115

N.问题补充

https://blog.csdn.net/weixin_42582008/article/details/100761701

1.进程和线程间的区别

2.多线程的好处以及问题

3.多线程的优先级

4.守护线程(Deamon线程)

5. 多线程共用一个数据变量注意什么

6.线程间通信方式

7.并发级别有哪些

阻塞、无饥饿、无障碍、无锁、无等待

https://www.cnblogs.com/Joe-Go/p/9647298.html

8.java内存模型 

Java内存模型简称JMM,本身是一个抽象概念并不真实存在,描述的是一种规范,通过这组规范定义了程序中各个变量的访问方式。规定所有变量都存储在主内存中,主内存是共享内存区域,所有线程都可以访问,但是线程对变量的操作(比如读取赋值)必须在工作内存中进行。首先要将变量从主内存中拷贝到自己的工作内存中,然后再对变量进行操作,操作完成后写回主内存,不能直接操作主内存中的变量。工作内存是每个线程的私有区域,不同线程无法访问对方的工作内存,线程之间的通信要通过主内存完成。

https://www.jianshu.com/p/15106e9c4bf3等,深入了解java虚拟机12章也有相关内容

9.多线程的三大特性及happen before原则

原子性 可见性 有序性 https://www.cnblogs.com/goldlong/p/10953909.html

happen befroe原则 https://www.jianshu.com/p/1508eedba54d

10.快速失败和安全失败 picture17

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值