多线程
1.什么是指令重排序
编译器会为了提高性能对指令会进行自动重排序,但是有依赖关系的数据不会去添加,volatile也可以用来保证不会重排序和可见性。
2.单例模型既然已经用了synchronized,为什么还要在加volatile?
因为synchronized保证只有一个线程执行,volatile保证其中的多部操作不会进行重排序
3.多线程要考虑哪些问题

保证数据的一致性有哪些方案呢?

如何实现一个线程
1.继承thread类 2.实现runnable接口 3.实现Callable接口与FutureTask
4.线程池、
如何停止线程运行
1.retunr 2.异常 3.stop 4.sleep
线程的六种状态

如何保证线程安全
synchronized,volatile,Lock接口和ReentrantLock类,线程局部变量:ThreadLoca
实现锁的几种方法
synchronized 2.Lock接口 3reentrantlock
reentrantlock和synchronized区别:
sy:通过一个队列和一个可重入锁的值去判断
reen:可中断性,是基于aqs这个抽象类实现的。可以设置超时时间,可以实现公平锁和非公平锁,
产生死锁的几种可能性
资源独占以及不可剥夺,循环依赖,资源不能同时被享用。
介绍线程池概念
逻辑判断:


拒绝策略

非核心的线程会建立后销毁,如果阻塞队列没满,会添加到阻塞队列后等待核心线程去执行。



浙公网安备 33010602011771号