1 |
进程和线程的区别? |
2 |
进程之间怎么进行通信? |
3 |
线程之间怎么进行通信? |
4 |
什么是原子性? |
5 |
什么是可见性? |
6 |
什么是有序性? |
7 |
long、double 读写是原子性的吗? |
8 |
i++、i– 操作是原子性的吗? |
9 |
为什么要使用多线程? |
10 |
创建线程有哪几种方式? |
11 |
什么是守护线程? |
12 |
线程的状态有哪几种?怎么流转的? |
13 |
线程的优先级有什么用? |
14 |
我们常说的 JUC 是指什么? |
15 |
i++ 是线程安全的吗? |
16 |
怎么让 3 个线程按顺序执行? |
17 |
编程实现让 3 个线程按顺序执行 |
18 |
join 方法有什么用?什么原理? |
19 |
如何让一个线程休眠? |
20 |
启动一个线程是用 start 还是 run 方法? |
21 |
一个线程多次调用 start 会发生什么? |
22 |
start 和 run 方法有什么区别? |
23 |
sleep 和 wait 方法有什么区别? |
24 |
Thread.yield 方法有什么用? |
25 |
yield 和 sleep 有什么区别? |
26 |
怎么理解 Java 中的线程中断? |
27 |
线程中断与 stop 的区别? |
28 |
你怎么理解多线程分组? |
29 |
你怎么理解 wait、notify、notifyAll? |
30 |
wait、notify、notifyAll 它们并不是 Thread 类中的方法,而是 Object 类中的,为什么呢? |
31 |
同步和异步的区别? |
32 |
什么是死锁? |
33 |
怎么避免死锁? |
34 |
什么是活锁? |
35 |
什么是无锁? |
36 |
什么是线程饥饿? |
37 |
编程实现一个多线程死锁的例子 |
38 |
AtomicInteger 的底层实现是怎样的? |
39 |
什么是 CAS? |
40 |
CAS 有什么缺点? |
41 |
CAS 底层使用了哪个操作类? |
42 |
CAS 在 JDK 中有哪些应用? |
43 |
用伪代码写一个 CAS 算法的核心 |
44 |
多线程情况下,进行数字累加(count++)要注意什么? |
45 |
有了 AtomicInteger,为什么 JDK 又搞出了 LongAdder? |
46 |
AtomicXXX 和 LongAdder,推荐用哪个? |
47 |
LongAdder 为什么性能更好?原理是什么? |
48 |
LongAdder 性能那么好,那有没有什么缺点呢? |
49 |
阻塞和非阻塞的区别? |
50 |
并发和并行的区别? |
51 |
为什么不推荐使用 stop 停止线程? |
52 |
如何优雅地终止一个线程? |
53 |
Synchronized 同步锁有哪几种用法? |
54 |
什么是重入锁(ReentrantLock)? |
55 |
重入锁有哪些重要的方法? |
56 |
重入锁怎么用? |
57 |
重入锁你怎么理解 “重入”? |
58 |
synchronized 是重入锁吗? |
59 |
Synchronized 与 ReentrantLock 的区别? |
60 |
synchronized 锁的是什么? |
61 |
什么是读写锁? |
62 |
有没有比 ReadWriteLock 读写锁更快的锁? |
63 |
公平锁和非公平锁的区别? |
64 |
有哪些锁优化的方式? |
65 |
什么是偏向锁? |
66 |
什么是轻量级锁? |
67 |
什么是自旋锁? |
68 |
什么是锁消除? |
69 |
什么是锁粗化? |
70 |
什么是重量级锁? |
71 |
谈谈多线程中的 ExecutorService 接口? |
72 |
谈谈多线程中的 ThreadPoolExecutor 类? |
73 |
什么是线程池? |
74 |
使用线程池有什么好处? |
75 |
创建一个线程池有哪些核心参数? |
76 |
线程池的工作流程是怎样的? |
77 |
线程池 ExecutorService 和 Executors 的区别? |
78 |
Java 里面有哪些内置的线程池? |
79 |
为什么阿里不让用 Executors 创建线程池? |
80 |
线程池的拒绝策略有哪几种? |
81 |
如何提交一个线程到线程池? |
82 |
线程池 submit 和 execute 有什么区别? |
83 |
如何查看线程池的运行状态? |
84 |
如何设置线程池的大小? |
85 |
如何关闭线程池? |
86 |
谈谈多线程中的 CompletionService 接口? |
87 |
谈谈多线程中的 ExecutorCompletionService 类? |
88 |
CompletionService 用完需要关闭吗?怎么关闭? |
89 |
Java 实现异步编程有什么方案? |
90 |
谈谈多线程中的 CompletableFuture 类? |
91 |
谈谈多线程中的 CompletionStage 接口? |
92 |
AQS 是什么? |
93 |
AQS 的底层原理是什么? |
94 |
Fork Join 框架有什么用? |
95 |
Fork Join 框架的运行流程? |
96 |
Fork Join 框架底层什么机制? |
97 |
Fork Join 框架核心类有哪些? |
98 |
使用 Fork Join 框架有什么需要注意的? |
99 |
编程实现使用 Fork Join 框架的例子 |
100 |
ThreadLocal 有什么用? |
101 |
ThreadLocal 有什么副作用? |
102 |
volatile 关键字有什么用? |
103 |
volatile 有哪些应用场景? |
104 |
CyclicBarrier 有什么用? |
105 |
CountDownLatch 有什么用? |
106 |
CountDownLatch 与 CyclicBarrier 的区别? |
107 |
Semaphore 有什么用? |
108 |
Exchanger 有什么用? |
109 |
LockSupport 有什么用? |
110 |
Java 中原子操作的类有哪些? |
111 |
什么是 ABA 问题? |
112 |
怎么解决 ABA 问题? |
113 |
Java 并发容器,你知道几个? |
114 |
什么是阻塞队列? |
115 |
阻塞队列有哪些常用的应用场景? |
116 |
Java 中的阻塞的队列有哪些? |
117 |
什么是协程? |
118 |
Java 支持协程吗? |
119 |
Java 支持协程的框架有哪些? |
120 |
SimpleDateFormat 是线程安全的吗?为什么?以及怎么解决? |
121 |
parallelStream 的底层实现是什么? |
122 |
parallelStream 有没有遇到什么坑? |
123 |
parallelStream 是线程安全的吗? |
124 |
parallelStream 默认启动了多少线程? |
125 |
parallelStream 如何修改默认线程数? |
126 |
parallelStream 和 stream 的区别? |
127 |
parallelStream 和 stream 哪个快? |