首页
Java基础
992.简述 java 内存分配与回收策率以及 Minor GC 和 Major GC
991.什么是类加载器,类加载器有哪些?
990.类加载器双亲委派模型机制?
989.简述 java 类加载机制?
988.java 类加载过程?
987.java 内存模型
986.java 中垃圾收集的方法有哪些?
985.简述 java 垃圾回收机制?
984.如和判断一个对象是否存活?(或者 GC 对象的判定方 法)
983.JVM 内存分哪几个区,每个区的作用是什么?
多线程
173.ReentrantReadWriteLock 实现独占和共享两种方式
172.同步器的实现是 ABS 核心(state 资源状态计数)
171.什么是 AQS(抽象的队列同步器)
170.ABA 问题
169.原子包 java.util.concurrent.atomic(锁自旋)
168. CAS(比较并交换-乐观锁机制-锁自旋)概念及特性
167.多级反馈队列调度算法
166.时间片轮转法
165.高响应比优先调度算法
164.高优先权优先调度算法
MySQL
1191.MySQL 的 insert 和 update 的 select 语句语法
1190.MySQL 当记录不存在时 insert,当记录存在时 update,语句怎么写?
1189.HAVNG 子句 和 WHERE 的异同点?
1188. [SELECT *] 和[SELECT 全部字段]的 2 种写法有何优缺点?
1187.若一张表中只有一个字段 VARCHAR(N)类型,utf8 编码,则 N 最大值 为多少(精确到数量级即可)?
1186.MySQL 中控制内存分配的全局参数,有哪些?
1185.MySQL 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现) 的?
1184.表中有大字段 X(例如:text 类型),且字段 X 不会经常更新,以读为 为主,将该字段拆成子表好处是什么?
1183.MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区 别?
1182.mysql 中 varchar 与 char 的区别以及 varchar(50)中的 50 代表的涵 义?
IDEA注册码
当前位置:
Java面试题
>
多线程
>
99.公平锁(Fair)
爪哇
多线程
2021-09-15
99.公平锁(Fair)
加锁前检查是否有排队等待的线程,优先排队等待的线程,先来先得
上一篇
98.可重入锁(递归锁)
下一篇
100.非公平锁(Nonfair)
多线程教程
0. 说说synchronized的实现原理
1. ReentrantLock与synchronized的区别
2. 说一下synchronized锁升级过程
3. 了解过什么是“伪共享”吗?
4. “伪共享”出现的原因是什么?
5. 如何避免“伪共享”?
6. Java里的线程有哪些状态?
7. 什么是悲观锁?什么是乐观锁?
8. 并发编程三要素?
9. 创建线程有哪些方式?
10. 线程池的优点?
11. CyclicBarrier和CountDownLatch的区别
12. 什么是CAS?
13. CAS的问题
14. 什么是AQS?
15. AQS支持几种同步方式?
16. 什么是自旋锁?
17. 什么是多线程的上下文切换?
18. 什么是线程和进程?
19. 程序计数器为什么是私有的?
20. 虚拟机栈和本地方法栈为什么是私有的?
21. 并发与并行的区别?
22. 什么是线程死锁?如何避免死锁?
23. sleep() 方法和 wait() 方法的区别和共同点?
24. 为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?
25. 什么是线程安全问题?如何解决?
26. 什么是活锁?
27. 什么是线程的饥饿问题?如何解决?
28. 什么是线程的阻塞问题?如何解决?
29. synchronized 关键字和 volatile 关键字的区别
30. 说一说几种常见的线程池及适用场景?
31. 线程池都有哪几种工作队列?
32. 什么是线程安全?
33. Java中如何获取到线程dump文件
34. Java中用到的线程调度算法是什么?
35. Thread.sleep(0)的作用是什么?
36. 单例模式的线程安全性
37. Semaphore有什么作用?
38. Hashtable的size()方法中明明只有一条语句"return count",为什么还要做同步?
39. 同步方法和同步块,哪个是更好的选择?
40. 高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务 怎样使用线程池?并发高、业务执行时间长的业务怎样使用线程池?
41. 在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存, 它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现 它?
42. 你将如何使用thread dump?你将如何分析Thread dump?
43. 67.JAVA 线程实现/创建方式
44. 68.4 种线程池
45. 69.线程生命周期(状态)
46. 70.新建状态(NEW)
47. 71.就绪状态(RUNNABLE)
48. 72.运行状态(RUNNING)
49. 73.阻塞状态(BLOCKED)
50. 74.线程死亡(DEAD)
51. 75. 终止线程 4 种方式
52. 76. sleep 与 wait 区别
53. 77.start 与 run 区别
54. 78.JAVA 后台线程
55. 79.乐观锁
56. 80.悲观锁
57. 81.自旋锁
58. 82.Synchronized 同步锁
59. 83.Synchronized 作用范围
60. 84.Synchronized 核心组件
61. 85.Synchronized 实现
62. 86.ReentrantLock
63. 87.Lock 接口的主要方法
64. 88.非公平锁
65. 89.公平锁
66. 90.ReentrantLock 与 synchronized
67. 91.ReentrantLock 实现
68. 92.Condition 类和 Object 类锁方法区别区别
69. 93.tryLock 和 lock 和 lockInterruptibly 的区别
70. 94.Semaphore 信号
71. 95.实现互斥锁(计数器为 1)
72. 96.Semaphore 与 ReentrantLock
73. 97.AtomicInteger
74. 98.可重入锁(递归锁)
75. 99.公平锁(Fair)
76. 100.非公平锁(Nonfair)
77. 101.ReadWriteLock 读写锁
78. 102.共享锁和独占锁
79. 103.重量级锁(Mutex Lock)
80. 104.轻量级锁
81. 105.偏向锁
82. 106.分段锁
83. 107.锁优化
84. 108.线程基本方法
85. 109.线程等待(wait)
86. 110.线程睡眠(sleep)
87. 111.线程让步(yield)
88. 112.线程中断(interrupt)
89. 113.Join 等待其他线程终止
90. 114.为什么要用 join()方法?
91. 115.线程唤醒(notify)
92. 116.其他方法
93. 117.线程上下文切换
94. 118.进程
95. 119.上下文
96. 120.寄存器
97. 121.程序计数器
98. 122.PCB-“切换桢”
99. 123.上下文切换的活动
100. 124.引起线程上下文切换的原因
101. 125.同步锁
102. 126.死锁
103. 127.线程池原理
104. 128.线程复用
105. 129.线程池的组成
106. 130.拒绝策略
107. 131.Java 线程池工作过程
108. 132.JAVA 阻塞队列原理
109. 133.阻塞队列的主要方法
110. 134.插入操作
111. 135.获取数据操作
112. 136.Java 中的阻塞队列
113. 137.ArrayBlockingQueue(公平、非公平)
114. 138.LinkedBlockingQueue(两个独立锁提高并发)
115. 139.PriorityBlockingQueue(compareTo 排序实现优先)
116. 140.DelayQueue(缓存失效、定时任务 )
117. 141.SynchronousQueue(不存储数据、可用于传递数据)
118. 142.LinkedTransferQueue
119. 143.LinkedBlockingDequ
120. 144.CountDownLatch(线程计数器 )
121. 145.CyclicBarrier(回环栅栏-等待至 barrier 状态再全部同时执行)
122. 146.Semaphore(信号量-控制同时访问的线程个数)
123. 147.volatile 关键字的作用
124. 148.变量可见性
125. 149.禁止重排序
126. 150.比 sychronized 更轻量级的同步锁
127. 151.适用场景
128. 152.如何在两个线程之间共享数据
129. 153.ThreadLocal 作用(线程本地存储)
130. 154.ThreadLocalMap(线程的一个属性)
131. 155.使用场景
132. 156.synchronized 和 ReentrantLock 的区别
133. 157.ConcurrentHashMap 并发
134. 158.ConcurrentHashMap 分段锁
135. 159.抢占式调度
136. 160.协同式调度
137. 161.JVM 的线程调度实现(抢占式调度)
138. 162.线程让出 cpu 的情况
139. 163.优先调度算法
140. 164.高优先权优先调度算法
141. 165.高响应比优先调度算法
142. 166.时间片轮转法
143. 167.多级反馈队列调度算法
144. 168. CAS(比较并交换-乐观锁机制-锁自旋)概念及特性
145. 169.原子包 java.util.concurrent.atomic(锁自旋)
146. 170.ABA 问题
147. 171.什么是 AQS(抽象的队列同步器)
148. 172.同步器的实现是 ABS 核心(state 资源状态计数)
149. 173.ReentrantReadWriteLock 实现独占和共享两种方式