【Java多线程与并发】知识点整理(追加中)

版权声明:本文为博主原创文章,转载请标明出处 https://blog.csdn.net/YangDongChuan1995/article/details/79438768

前言:文章中只罗列出知识点问题,并不提供对应的答案,仅仅作为检验自己是否对某个知识点存在空缺或遗忘,答案请自行Google
Java多线程入门级书籍推荐:《Java多线程编程核心技术》

2018年3月4日记录:

一.简述 volatile 关键字
- a.内存屏障
- b.使用 volatile 关键字的场景

二.简述Java内存模型(非Java虚拟机内存模型)
- a.volatile关键字
- b.原子性(注意在64位下的long和double)、可见性、有序性
- c.happens-before原则(先行发生原则)

三.Java中的同步容器(非并发容器)和缺陷
- a.同步容器主要包括两类
- b.缺陷:性能、异常

四.CopyOnWriteArrayList的实现原理
- a.读/写
- b.性能缺陷
- c.优点

五.Java 中堆和栈有什么不同(以线程的方向来回答)

六.Java 中的死锁、饥饿、活锁
- a.死锁与活锁的区别
- b.如何避免活锁

七.线程池!!!
- a.什么是线程池
- b.使用线程池的好处
- c.线程池的工作原理
- d.Executor接口/ExecutorService接口/AbstractExecutorService 抽象类
- e.Executors类
- f.ThreadPoolExecutor类,构造参数,BlockingQueue的类型、RejectedExecutionHandler处理失败任务的四种策略
- g.execute和submit的区别
- h.shutdown()和shutdownNow()的区别
- i.线程池的注意事项
- j.简单线程池的设计
- k.如何合理的配置 java 线程池?如 CPU 密集型的任务,基本线程池
应该配置多大?IO 密集型的任务,基本线程池应该配置多大?用有界
队列好还是无界队列好?任务非常多的时候,使用什么阻塞队列能获取
最好的吞吐量?

八.阻塞队列
- a.ArrayBlockingQueue 和 LinkedBlockingQueue 的区别
- b.DelayQueue与SynchronousQueue

九.什么是CAS,优缺点
- a.同步锁的分类
- b.锁的分类
- c.Java中的悲观锁与乐观锁

十.Java中实现多线程的四种方式
- a.Thread类/Runnable接口/Callable接口/线程池
- b.Runnable和Callable有什么不同

十一.实现多线程的同步
- a.synchronized的用法
- b.Lock的用法
- c.volatile和synchronized区别
- d.什么场景下可以使用volatile替换synchronized

十二.实现线程之间的通信
- a.Object类中wait()\notify()\notifyAll()
- b.Condition接口
- c.管道实现线程间的通信(阐述其缺点)

十三.如何确保线程安全

十四.多线程的优点和缺点

十五.wait()和sleep()的区别
- a.join(),notify(),notifyAll()

十六.Java中interrupted()和isInterrupted()的区别

十七.Java创建线程后,直接调用start()方法和run()的区别

十八.什么是线程的上下文切换

十九.用户线程和守护线程有什么区别

二十.线程的状态

二十一.Java程序如何停止一个线程

二十二.ThreaLocal的作用及其原理

猜你喜欢

转载自blog.csdn.net/YangDongChuan1995/article/details/79438768