首页
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面试题
>
并发编程面试专栏
>
752.什么是重入锁?
爪哇
并发编程面试专栏
2021-10-10
752.什么是重入锁?
所谓重入锁,指的是以线程为单位,当一个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,而其他的线程是不可以的。
上一篇
751.线程 yield()方法有什么用?
下一篇
753.Synchronized 有哪几种用法?
并发编程面试专栏教程
0. 673.现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行?
1. 674.在 Java 中 Lock 接口比 synchronized 块的优势是什么?你需要实现一个高效的缓存,它允 许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
2. 675.在 java 中 wait 和 sleep 方法的不同?
3. 676.用 Java 实现阻塞队列
4. 677.用 Java 写代码来解决生产者——消费者问题。
5. 678.用 Java 编程一个会导致死锁的程序,你将怎么解决
6. 679.什么是原子操作,Java 中的原子操作是什么?
7. 680.Java 中的 volatile 关键是什么作用?怎样使用它?在 Java 中它跟 synchronized 方法有什 么不同?
8. 681.什么是竞争条件?你怎样发现和解决竞争?
9. 682.你将如何使用 threaddump?你将如何分析 Thread dump?
10. 683.为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?
11. 684.Java 中你怎样唤醒一个阻塞的线程?
12. 685.在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?
13. 686.什么是不可变对象,它对写并发应用有什么帮助?
14. 687.你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的?
15. 688.Synchronized 用 过 吗 , 其 原 理 是 什 么 ?
16. 689.你 刚 才 提 到 获 取 对 象 的 锁 , 这 个 “ 锁 ” 到 底 是 什 么 ? 如 何 确 定 对 象 的 锁
17. 690.什 么 是 可 重 入 性 , 为 什 么 说 Synchronized 是 可 重 入 锁 ?
18. 691.JVM 对 Java 的 原 生 锁 做 了 哪 些 优 化 ?
19. 692. 为 什 么 说 Synchronized 是 非 公 平 锁 ?
20. 693.什 么 是 锁 消 除 和 锁 粗 化 ?
21. 694.为 什 么 说 Synchronized 是 一 个 悲 观 锁 ? 乐 观 锁 的 实 现 原 理 又 是 什 么 ? 什 么 是 CAS, 它 有 什 么 特 性 ?
22. 695. 乐 观 锁 一 定 就 是 好 的 吗 ?
23. 696.跟 Synchronized 相 比 , 可 重 入 锁 ReentrantLock 其 实 现 原 理 有 什 么 不 同
24. 697.那 么 请 谈 谈 AQS 框 架 是 怎 么 回 事 儿 ?
25. 698.请 尽 可 能 详 尽 地 对 比 下 Synchronized 和 ReentrantLock 的 异 同 。
26. 699.ReentrantLock 是 如 何 实 现 可 重 入 性 的 ?
27. 700.除 了 ReetrantLock, 你 还 接 触 过 JUC 中 的 哪 些 并 发 工 具 ?
28. 701. 请 谈 谈 ReadWriteLock 和 StampedLock。
29. 702. 如 何 让 Java 的 线 程 彼 此 同 步 ? 你 了 解 过 哪 些 同 步 器 ? 请 分 别 介 绍 下 。
30. 703. CyclicBarrier 和 CountDownLatch 看 起 来 很 相 似 , 请 对 比 下 呢
31. 704.Java 中 的 线 程 池 是 如 何 实 现 的 ?
32. 705.创 建 线 程 池 的 几 个 核 心 构 造 参 数 ?
33. 706.线 程 池 中 的 线 程 是 怎 么 创 建 的 ? 是 一 开 始 就 随 着 线 程 池 的 启 动 创 建 好 的 吗 ?
34. 707.既 然 提 到 可 以 通 过 配 置 不 同 参 数 创 建 出 不 同 的 线 程 池 , 那 么 Java 中 默 认 实 现 好 的 线 程 池 又 有 哪 些 呢 ? 请 比 较 它 们 的 异 同 。
35. 708.如 何 在 Java 线 程 池 中 提 交 线 程 ?
36. 709.什 么 是 Java 的 内 存 模 型 , Java 中 各 个 线 程 是 怎 么 彼 此 看 到 对 方 的 变 量 的 ?
37. 710.请 谈 谈 volatile 有 什 么 特 点 , 为 什 么 它 能 保 证 变 量 对 所 有 线 程 的 可 见 性
38. 711.既 然 volatile 能 够 保 证 线 程 间 的 变 量 可 见 性 , 是 不 是 就 意 味 着 基 于 volatile 变 量 的 运 算 就 是 并 发 安 全 的
39. 712.请 对 比 下 volatile 对 比 Synchronized 的 异 同 。
40. 713.请 谈 谈 ThreadLocal 是 怎 么 解 决 并 发 安 全 的 ?
41. 714.很 多 人 都 说 要 慎 用 ThreadLocal, 谈 谈 你 的 理 解 , 使 用 ThreadLocal 需 要 注 意 些 什 么 ?
42. 715. stop() 和 suspend() 方法为何不推荐使用?
43. 716.sleep() 和 wait() 有什么区别
44. 717.同步和异步有何异同,在什么情况下分别使用他们?
45. 718.当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其 它方法?
46. 719.简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?
47. 720.概括的解释下线程的几种可用状态。
48. 721.什么是 ThreadLocal?
49. 722.run() 和 start() 区别。
50. 723.请说出你所知道的线程同步的方法。
51. 724.线程调度和线程控制。
52. 725.什么是线程饿死,什么是活锁?
53. 726.多线程中的忙循环是什么?
54. 727.volatile 变量是什么?volatile 变量和 atomic 变量有什么不同?
55. 728.volatile 类型变量提供什么保证?能使得一个非原子操作变成原子操作吗?
56. 729.多线程有什么用?
57. 730.线程和进程的区别是什么?
58. 731.Java 实现线程有哪几种方式?
59. 732.启动线程方法 start()和 run()有什么区别
60. 733.怎么终止一个线程?如何优雅地终止线程?
61. 734.一个线程的生命周期有哪几种状态?它们之间如何流转的?
62. 735.线程中的 wait()和 sleep()方法有什么区别
63. 736.多线程同步有哪几种方法?
64. 737.什么是死锁?如何避免死锁?
65. 738.多线程之间如何进行通信?
66. 739.线程怎样拿到返回结果?
67. 740.violatile 关键字的作用
68. 741.新建 T1、T2、T3 三个线程,如何保证它们按顺序执行?
69. 742.怎么控制同一时间只有 3 个线程运行?
70. 743.为什么要使用线程池
71. 744.常用的几种线程池并讲讲其中的工作原理。
72. 745.线程池启动线程 submit()和 execute()方法有什么不同
73. 746.CyclicBarrier 和 CountDownLatch 的区别?
74. 747.什么是活锁、饥饿、无锁、死锁?
75. 748.什么是原子性、可见性、有序性?
76. 749.什么是守护线程?有什么用?
77. 750.一个线程运行时发生异常会怎样?
78. 751.线程 yield()方法有什么用?
79. 752.什么是重入锁?
80. 753.Synchronized 有哪几种用法?
81. 754.Fork/Join 框架是干什么的?
82. 756.线程数过多会造成什么异常?
83. 757.说说线程安全的和不安全的集合。
84. 758.什么是 CAS 算法?在多线程中有哪些应用
85. 759.怎么检测一个线程是否拥有锁?
86. 755.Jdk 中排查多线程问题用什么命令?
87. 760.线程同步需要注意什么?
88. 761.线程 wait()方法使用有什么前提
89. 762.Fork/Join 框架使用有哪些要注意的地方?
90. 763.线程之间如何传递数据?
91. 764.保证"可见性"有哪几种方式?
92. 765.说几个常用的 Lock 接口实现锁
93. 766.ThreadLocal 是什么?有什么应用场景?
94. 767.ReadWriteLock 有什么用?
95. 768.FutureTask 是什么?
96. 769.怎么唤醒一个阻塞的线程?
97. 770.不可变对象对多线程有什么帮助?
98. 771.多线程上下文切换是什么意思?
99. 772.Java 中用到了什么线程调度算法?
100. 773.Thread.sleep(0)的作用是什么?
101. 774.Java 内存模型是什么,哪些区域是线程共享的,哪些是不共享 的?
102. 775.什么是乐观锁和悲观锁?
103. 776.Hashtable 的 size()方法为什么要做同步
104. 777.同步方法和同步块,哪种更好?
105. 778.什么是自旋锁?
106. 779.Runnable 和 Thread 用哪个好?
107. 780.Java 中 notify 和 notifyAll 有什么区别?
108. 781.为什么 wait/notify/notifyAll 这些方法不在 thread 类里面?
109. 782.为什么 wait 和 notify 方法要在同步块中调用?
110. 783.为什么你应该在循环中检查等待条件?
111. 784.Java 中堆和栈有什么不同
112. 785.你如何在 Java 中获取线程堆栈?
113. 786.如何创建线程安全的单例模式?
114. 787.什么是阻塞式方法?
115. 788.提交任务时线程池队列已满会时发会生什么?
116. 789.什么是线程?
117. 790. 什么是线程安全和线程不安全?
118. 791.什么是⾃旋锁?
119. 792.什么是CAS?
120. 793. 什么是乐观锁和悲观锁?
121. 794.什么是AQS?
122. 795. 什么是原⼦操作?在Java Concurrency API中有哪些原⼦类(atomic classes)?
123. 796.什么是Executors框架?
124. 797. 什么是阻塞队列?如何使⽤阻塞队列来实现⽣产者-消费者模型?
125. 798.什么是Callable和Future?
126. 799.什么是FutureTask?
127. 800.什么是同步容器和并发容器的实现?
128. 801.什么是多线程的上下⽂切换?
129. 802.ThreadLocal的设计理念与作⽤?
130. 803.ThreadPool(线程池)⽤法与优势?
131. 804. Concurrent包⾥的其他东⻄:ArrayBlockingQueue、CountDownLatch等等。
132. 805.synchronized和ReentrantLock的区别?
133. 806.Java Concurrency API中的Lock接⼝(Lock interface)是什么?对⽐同步它有什么优势?
134. 807. Hashtable的size()⽅法中明明只有⼀条语句”return count”,为什么还要做同步?
135. 808.ConcurrentHashMap的并发度是什么?
136. 809.ReentrantReadWriteLock读写锁的使⽤?
137. 810.CyclicBarrier和CountDownLatch的⽤法及区别?
138. 811.Condition接⼝及其实现原理?
139. 812. Fork/Join框架的理解?
140. 813.wait()和sleep()的区别?
141. 814.线程的五个状态(五种状态,创建、就绪、运⾏、阻塞和死亡)?
142. 815.start()⽅法和run()⽅法的区别?
143. 816.Runnable接⼝和Callable接⼝的区别?
144. 817.volatile关键字的作⽤?
145. 818.Java中如何获取到线程dump⽂件?
146. 819.线程和进程有什么区别?
147. 820. 线程实现的⽅式有⼏种(四种)?
148. 821. ⾼并发、任务执⾏时间短的业务怎样使⽤线程池?并发不⾼、任务执⾏时间⻓的业务怎样使⽤线程池?并发⾼、 业务执⾏时间⻓的业务怎样使⽤线程池?
149. 822.如果你提交任务时,线程池队列已满,这时会发⽣什么?
150. 823.锁的等级:⽅法锁、对象锁、类锁?
151. 824.如果同步块内的线程抛出异常会发⽣什么?
152. 825.并发编程(concurrency)并⾏编程(parallellism)有什么区别?
153. 826.如何保证多线程下 i++ 结果正确?
154. 827.⼀个线程如果出现了运⾏时异常会怎么样?
155. 828. 如何在两个线程之间共享数据?
156. 829. ⽣产者消费者模型的作⽤是什么?
157. 830.怎么唤醒⼀个阻塞的线程?
158. 831.Java中⽤到的线程调度算法是什么
159. 832. 单例模式的线程安全性?
160. 833.线程类的构造⽅法、静态块是被哪个线程调⽤的?
161. 834.同步⽅法和同步块,哪个是更好的选择?
162. 835.如何检测死锁?怎么预防死锁?
163. 836. HashMap在多线程环境下使⽤需要注意什么?
164. 837.什么是守护线程?有什么⽤?
165. 838. 如何实现线程串⾏执⾏?
166. 839.可以运⾏时kill掉⼀个线程吗?
167. 840.关于synchronized:
168. 841.分步式锁,程序数据库中死锁机制及解决⽅案
169. 842.数据库死锁机制和解决⽅案
170. 843.spring单例为什么没有安全问题(ThreadLocal)
171. 844.线程池原理:
172. 845.java锁多个对象:
173. 846.java线程如何启动:
174. 847. java中加锁的⽅式有哪些,如何实现怎么个写法.
175. 848.如何保证数据不丢失:
176. 849.ThreadLocal为什么会发⽣内存泄漏?
177. 850.、jdk8中对ConcurrentHashmap的改进
178. 851.concurrent包下有哪些类?
179. 852.线程a,b,c,d运⾏任务,怎么保证当a,b,c线程执⾏完再执⾏d线程?
180. 853.⾼并发系统如何做性能优化?如何防⽌库存超卖?
181. 854.线程池的参数配置,为什么java官⽅提供⼯⼚⽅法给线程池?