【java八股问】java 多线程(下)
1、并发编程三要素?
2、实现可见性的方法有哪些?
3、多线程的价值?
4、创建线程的有哪些方式?
5、创建线程的三种方式的对比?
6、线程的状态流转图
7、Java 线程具有五中基本状态
8、什么是线程池?有哪几种创建方式?
9、四种线程池的创建?
10、线程池的优点?
11、常用的并发工具类有哪些?
12、CyclicBarrier 和 CountDownLatch 的区别
13、synchronized 的作用?
14、volatile 关键字的作用?
15、什么是 CAS?
16、CAS 的问题?
17、什么是 Future?
18、什么是 AQS?
19、AQS 支持两种同步方式?
20、ReadWriteLock 是什么?
21、FutureTask 是什么?
22、synchronized 和 ReentrantLock 的区别?
23、什么是乐观锁和悲观锁?
24、线程 B 怎么知道线程 A 修改了变量
25、synchronized、volatile、CAS 比较
26、sleep 方法和 wait 方法有什么区别?
27、ThreadLocal 是什么?有什么用?
28、为什么 wait()方法和 notify()/notifyAll()方法要在同步块中被调用这是 JDK 强制的,wait()方法和 notify()/notifyAll()方法在调用前都必须先获得对象的锁?
29、多线程同步有哪几种方法?
30、线程的调度策略线程调度器选择优先级最高的线程运行,但是,如果发生以下情况,就会终止线程的运行:
1、线程体中调用了 yield 方法让出了对 cpu 的占用权利
2、线程体中调用了 sleep 方法使线程进入睡眠状态
3、线程由于 IO 操作受到阻塞
4、另外一个更高优先级线程出现
5)在支持时间片的系统中,该线程的时间片用完
31、ConcurrentHashMap 的并发度是什么?
32、Linux 环境下如何查找哪个线程使用 CPU 最长
1、获取项目的 pid,jps 或者 ps -ef | grep java,这个前面有讲过
2、top -H -p pid,顺序不能改变

浙公网安备 33010602011771号