-
Java中通过ExecutorService接口实现线程池管理,使用Executors工具类创建固定、缓存、单线程及定时线程池,提交任务可选submit()方法执行Runnable或Callable并获取Future结果,需调用shutdown()或shutdownNow()安全关闭线程池,推荐手动配置ThreadPoolExecutor避免无界队列导致内存溢出。
-
interrupt()是协作式线程终止机制,设置中断状态并由线程自行处理;2.阻塞时抛InterruptedException且清除状态,需捕获并响应;3.非阻塞循环中应显式调用isInterrupted()检查;4.捕获异常后应重置中断状态以确保信号传递;5.使用ExecutorService的shutdownNow()等方法也基于该机制,确保安全退出。
-
Java中依赖关系指类在运行时使用另一类(非继承/实现),表现为方法参数、局部变量或new对象;管理方式有手动new、工厂模式和IoC容器;识别依赖看参数、字段、new语句;遵循依赖倒置原则,高层模块应依赖抽象而非具体实现。
-
动态绑定在Java中指运行时根据对象实际类型调用重写方法,需满足:非静态非私有非final方法、子类重写、父类引用指向子类对象。例如Animala=newDog();a.makeSound()会调用Dog类的makeSound方法。而static、private、final方法及成员变量访问不触发动态绑定,始终采用静态绑定。只要使用向上转型调用重写方法,JVM自动通过虚方法表实现动态绑定。
-
正则表达式按标准化规范分为BRE和ERE两类:BRE需转义+?{}|()等元字符,ERE默认启用;按实现引擎分POSIX、PCRE、Java、.NET、JavaScript等,其中PCRE因兼容Perl高级特性成为事实标准。
-
正则表达式源于1943年McCulloch-Pitts神经元模型,经Kleene1951年形式化为正则集合理论;1960年代末Thompson将其实现为QED/grep文本搜索工具;1980年代POSIX标准化BRE/ERE;1987年Perl引入高级特性;1990年代PCRE库推动跨语言统一。
-
抽象类是Java中用于作为父类提供通用结构且不能实例化的类,使用abstract关键字定义。它可包含抽象方法(无实现)和具体方法(有实现),子类必须实现其抽象方法,否则也需声明为抽象类。抽象类支持成员变量、构造方法、普通及静态方法,常用于具有共同特征但行为不同的类族设计,如模板方法模式。由于Java单继承限制,一个类只能继承一个抽象类,适用于框架设计以实现代码复用与行为约束。
-
CAS操作通过比较并交换实现多线程下的原子操作,避免锁开销,提升并发性能;其核心是乐观锁机制,假设无冲突直接尝试更新,失败则重试,适用于原子计数器、无锁队列、原子引用等场景,但存在自旋开销和ABA问题;ABA问题指值由A→B→A变化,导致误判未变,可通过引入版本号解决,确保值与版本同时匹配才更新,从而保障操作安全性。
-
答案:开发Java仓库管理系统需设计Product、WarehouseService和Main类,实现商品增删改查、出入库及库存查询功能,使用ArrayList存储数据,可通过文件持久化。
-
Java中基本类型直接存值于栈,引用类型存堆中对象地址;Integer等包装类有缓存机制(-128~127),自动装箱拆箱易引发NullPointerException,==比较引用而非值,数组和String均为引用类型,类型转换需注意范围与安全性。
-
Java中组合条件需用&&、||、!配合括号:&&要求全真,||满足一真即可,注意短路特性防NPE;括号明确优先级避免歧义;取反时!须包裹整个表达式;字符串用equals、判空前置、布尔变量直接使用。
-
Java版本未识别因PATH未添加JDK路径,需将JDK的bin目录加入PATH;2.JAVA_HOME配置错误会导致工具启动失败,应指向JDK根目录并正确引用;3.多版本冲突可通过调整PATH顺序或使用版本管理工具解决;4.IDE无法识别JDK需手动设置项目JDK路径并匹配语言级别。
-
应按场景选择流:字节流(InputStream/OutputStream)处理二进制数据,字符流(Reader/Writer)处理文本并需指定编码;缓冲流必须包装底层流,推荐使用try-with-resources自动管理关闭。
-
Java并发中内存可见性必须依赖JMM同步机制:volatile保证单变量读写可见但不保证原子性;synchronized通过锁的清空+刷出保障可见性与原子性;final字段在正确发布前提下提供初始化值的天然可见性。
-
Iterator是Java集合框架中用于安全遍历和删除元素的接口,通过hasNext()、next()和remove()方法实现统一访问;使用时需注意remove()调用时机、fail-fast机制及避免遍历中直接修改集合;增强for循环基于Iterator实现,但无法执行删除操作;多线程环境下推荐使用CopyOnWriteArrayList等线程安全集合以避免并发修改异常。