-
BlockingQueue是Java并发包中线程安全的阻塞队列接口,适用于生产者-消费者模型,如任务分发、日志缓冲等;不适用于普通容器,不可存null,选型需据容量与性能需求而定。
-
final方法主要解决子类意外重写导致行为不一致的问题,通过编译期强制约束保障逻辑稳定性、支持JVM内联优化、明确设计意图,并配合不可变类构建三层防线。
-
该用staticimport仅当频繁调用同一类多个静态成员且显著提升可读性时,如单元测试中使用assertThat、equalTo等;禁用于业务逻辑,避免命名冲突与可追溯性下降。
-
离线安装插件必须使用官方发布的.zip包而非.jar文件,因IDEA仅支持符合插件规范的.zip格式;需通过Settings→Plugins→齿轮图标→InstallPluginfromDisk...直接选择.zip文件(不解压),并确保插件版本与IDEA构建号兼容,且在插件列表中手动启用。
-
Semaphore的核心作用是限制并发数而非保证线程安全;它通过acquire/release控制资源配额,需成对调用且置于finally块;公平模式启用FIFO排队防饥饿但性能略低;acquire(n)要求原子性扣减n个许可。
-
线程结束需通过逻辑控制实现,1.正常运行结束:run()方法执行完毕后自动终止,适合处理完任务的场景;2.中断机制:调用interrupt()通知线程,通过isInterrupted()检查状态或捕获InterruptedException实现优雅退出;3.volatile标志位:定义volatileboolean变量,线程定期检查该标志并退出。推荐使用中断或标志位方式,避免stop()等不安全方法导致的问题。
-
Collections.unmodifiableXXX方法返回集合的只读视图,通过装饰器模式拦截修改操作,真正不可变需确保原始集合不被外部修改,推荐在构造时复制数据并封装为不可变视图。
-
设计安全的对象模型需通过私有字段与访问器控制状态,防止可变对象引用泄露,构造函数中确保完整性,优先设计不可变对象,并正确实现equals、hashCode和toString方法。
-
Java远程调试本质是JVM以-agentlib:jdwp参数启动并暴露JDWP端口,IDE作为客户端连接;失败主因是JVM未开启调试、网络拦截或源码与字节码不匹配。
-
本文介绍在SpringDataJPA中,无需编写原生SQL或JPQL,仅通过方法命名约定即可在Repository接口中实现字符串字段的升序/降序排序。
-
因为findFirst是短路终止操作,配合惰性求值,Pipeline在找到首个匹配元素后立即停止,后续元素不参与filter/map;而先collect再遍历需全量加载、新建集合、额外遍历,时间与内存开销均为O(n)。
-
Java多线程面试重在实战经验而非背诵;wait()必须在synchronized块中调用,否则抛IllegalMonitorStateException;ConcurrentHashMapJDK8用CAS+单桶锁替代分段锁;线程池拒绝策略中CallerRunsPolicy更防雪崩;ThreadLocal内存泄漏因key弱引用而value强引用未及时清理。
-
答案:比较对象时应使用equals而非==,因为==比较引用地址,equals比较内容。例如str1和str2内容相同但地址不同,==返回false,equals返回true;基本类型用==比较值,对象类型优先用equals判断逻辑相等。
-
YearMonth用于年月粒度事件管理,如账单日;MonthDay用于无年份的月日事件,如生日提醒;二者均需显式转为LocalDate参与日期运算,不可直接用于定时调度。
-
Account与Transaction应职责分离:Account管理余额和元信息,Transaction封装单笔收支(含时间、金额、类型、备注);关键约束须写入构造逻辑,如金额校验。