-
死锁是多线程互相持有对方所需锁而全部阻塞的现象,需同时满足互斥、占有并等待、不可剥夺、循环等待四个条件;典型代码中两线程以不同顺序获取lockA和lockB导致闭环等待。111 收藏 -
String不可变而char[]可变:String实例创建后内容无法修改,每次操作生成新对象;char[]元素可直接修改,适合频繁字符操作。111 收藏 -
静态方法属于类而非对象,编译期绑定声明类型,不依赖实例,故null调用不抛NPE;不能重写只能隐藏,不可用this/super,也不能直接访问非静态成员。109 收藏 -
BlockingQueue可简洁、线程安全地实现生产者-消费者模型,其put/take自动阻塞、内置同步、支持超时,常见实现有ArrayBlockingQueue、LinkedBlockingQueue和SynchronousQueue。109 收藏 -
ArrayList随机访问为O(1),LinkedList为O(n),因前者基于数组后者为链表;频繁索引遍历时ArrayList快3–10倍;仅头部/中间高频增删且无随机访问需求时才选LinkedList。108 收藏 -
ClassNotFoundException和NoSuchMethodException是Java反射中常见异常,前者因类路径错误或类名拼写错误导致,需检查全限定名和类路径;后者因方法名或参数类型不匹配引发,应确保方法签名正确并使用getDeclaredMethod访问私有方法。通过try-catch分别捕获并输出详细信息,可提升程序稳定性与调试效率。107 收藏 -
异常不是流程控制工具,不应以捕获NumberFormatException判断数字、用RuntimeException处理业务校验失败、强制处理不可恢复的检查异常,或重复记录同一异常堆栈。106 收藏 -
本文详解单链表环检测与断环的完整实现,重点解决当环起点为头节点时因prev未初始化导致的NullPointerException问题,并提供带哨兵节点的安全修复方案。106 收藏 -
答案:系统通过Student类封装学生信息,StudentManager类实现增删改查功能,使用ArrayList存储学生数据,支持按ID操作并避免重复,主程序驱动控制台交互。105 收藏 -
CountDownLatch是用于线程间等待协调的同步工具,适用于主线程等待多任务完成等场景;其计数器一次性递减归零后唤醒等待线程,不可重置,需配合超时或中断处理,并注意子线程异常导致计数卡住问题。104 收藏 -
Exception和Error是Throwable的两个平级子类,无继承关系;Exception表示程序可处理的异常,应捕获或声明,Error表示JVM严重错误,不应捕获而应快速终止。104 收藏 -
静态方法不属于任何对象实例,它在类加载时绑定到Class对象,不依赖实例,调用时无需this上下文,也不能访问非static成员;实例方法则必须依附具体对象,隐含this参数,行为随对象状态变化。101 收藏 -
TypeNotPresentException不是ClassNotFoundException,因为它是JVM解析泛型/注解等元数据时发现类型不存在而抛出的RuntimeException,发生在类加载前的字节码解析阶段,而非Class.forName()失败。101 收藏 -
首先设计Contact类封装联系人信息,再用ArrayList存储联系人,接着实现增删改查功能,最后通过Scanner接收用户输入完成控制台交互操作。100 收藏