首页
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面试题
>
Java高并发
>
为什么你应该在循环中检查等待条件
爪哇
Java高并发
2021-08-20
为什么你应该在循环中检查等待条件
处于等待状态的线程可能会收到错误警报和伪唤醒,如果不在循环中检查等待条件,程序就会在没有满足结束条件的情况下退出。
上一篇
为什么 wait 和 notify 方法要在同步块中调用?
下一篇
Java 中的同步集合与并发集合有什么区别
Java高并发教程
0. 什么是进程
1. 什么是线程
2. 进程间如何通讯
3. 线程间如何通讯
4. 同步和异步有何不同,在什么情况下分别使用它们?举例说明
5. 进程调度算法
6. Java中Unsafe类详解
7. 如何测试并发量?
8. 有三个线程T1,T2,T3,怎么确保它们按顺序执行?
9. 什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing)?
10. 数据库死锁?
11. 什么是锁顺序死锁?
12. 死锁的避免与诊断?
13. 常见的并发容器?
14. 常见的同步工具类?
15. Nginx多进程模型是如何实现高并发的?
16. CopyOnWriteArrayList
17. AQS
18. Java里的阻塞队列
19. ForkJoin框架
20. 在 java 中守护线程和本地线程区别?
21. 线程与进程的区别?
22. 什么是多线程中的上下文切换?
23. 死锁与活锁的区别,死锁与饥饿的区别?
24. Java 中用到的线程调度算法是什么?
25. 什么是线程组,为什么在 Java 中不推荐使用?
26. 为什么使用 Executor 框架?
27. 在 Java 中 Executor 和 Executors 的区别?
28. 什么是原子操作?在 Java Concurrency API 中有哪些原子类(atomic classes)?
29. Java Concurrency API 中的 Lock 接口(Lock interface) 是什么?
30. 什么是 Executors 框架?
31. 什么是阻塞队列?阻塞队列的实现原理是什 么?如何使用阻塞队列来实现生产者-消费者模型?
32. 什么是callable和future
33. 什么是 FutureTask
34. 什么是并发容器的实现
35. 多线程同步和互斥有几种实现方法,都是什么?
36. 什么是竞争条件?你怎样发现和解决竞争?
37. 你将如何使用 thread dump?你将如何分析Thread dump?
38. 为什么我们调用 start()方法时会执行 run() 方法,为什么我们不能直接调用 run()方法?
39. Java 中你怎样唤醒一个阻塞的线程?
40. 在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?
41. 什么是不可变对象,它对写并发应用有什么帮助?
42. 什么是多线程中的上下文切换
43. Java中用到的线程调度算法是什么?
44. 什么是线程组,为什么在 Java 中不推荐使用?
45. 为什么使用 Executor 框架比使用应用创建和管理线程好?
46. java 中有几种方法可以实现一个线程?
47. 如何停止一个正在运行的线程?
48. notify()和 notifyAll()有什么区别?
49. 什么是 Daemon 线程?它有什么意义?
50. java 如何实现多线程之间的通讯和协作?
51. 什么是可重入锁(ReentrantLock)?
52. 当一个线程进入某个对象的一个 synchronized 的实例方法后,其它线程是否可进入此对象的其它方法?
53. 乐观锁和悲观锁的理解及如何实现,有哪些实现方式?
54. SynchronizedMap 和 ConcurrentHashMap 有什么区别?
55. CopyOnWriteArrayList 可以用于什么应用场景?
56. 什么叫线程安全?servlet 是线程安全吗
57. volatile 有什么用?能否用一句话说明下 volatile 的应用场景?
58. 为什么代码会重排序?
59. 在 java 中 wait 和 sleep 方法的不同?
60. 一个线程运行时发生异常会怎样
61. 如何在两个线程间共享数据
62. Java 中 notify 和 notifyAll 有什么区别?
63. 为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
64. 什么是 ThreadLocal 变量?
65. Java 中 interrupted 和 isInterrupted 方 法 的区别?
66. 为什么 wait 和 notify 方法要在同步块中调用?
67. 为什么你应该在循环中检查等待条件
68. Java 中的同步集合与并发集合有什么区别
69. 什么是线程池? 为什么要使用它?
70. 怎么检测一个线程是否拥有锁?
71. JVM 中哪个参数是用来控制线程的栈堆栈小的
72. Thread 类中的 yield 方法有什么作用
73. Java 中 ConcurrentHashMap 的并发度是什么?
74. Java 中 Semaphore 是什么?
75. Java 线程池中 submit() 和 execute()方法有什么区别?
76. 什么是阻塞式方法?
77. Java 中的 ReadWriteLock 是什么?
78. volatile 变量和 atomic 变量有什么不同?
79. 可以直接调用 Thread 类的 run ()方法么?
80. 如何让正在运行的线程暂停一段时间?
81. 你对线程优先级的理解是什么?
82. 什么是线程调度器(Thread Scheduler)和时间分片 (Time Slicing )?
83. 你如何确保 main()方法所在的线程是 Java 程 序最后结束的线程?
84. 线程之间是如何通信的?
85. 为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在 Object 类里
86. 为什么 wait(), notify()和 notifyAll ()必须在同步方法或者同步块中被调用?
87. 为什么 Thread 类的 sleep()和 yield ()方法是静态的?
88. 如何确保线程安全?
89. 同步方法和同步块,哪个是更好的选择?
90. 如何创建守护线程?
91. 什么是 Java Timer 类?如何创建一个有特定时间间隔的任务?