Java线程与并发编程基础面试知识点
需积分: 0 111 浏览量
更新于2024-08-03
收藏 17KB DOCX 举报
所有子类型",只能读取集合中的数据,不能添加数据。
2.<?superT>表示包括T在内的"所有父类型",可以添加数据,但不能确保读取的数据类型是T。
在Java中创建线程执行任务主要有四种方式:
1. 实现`Runnable`接口:这是最基础的方式,创建一个实现了Runnable接口的类实例,然后将这个实例作为参数传递给Thread类的构造器创建线程。
2. 继承`Thread`类:创建一个继承自Thread类的子类,并重写其run()方法,通过实例化这个子类来创建线程。
3. 实现`Callable`接口:Callable接口与Runnable类似,但它允许返回一个结果。通过`FutureTask`将Callable转换为Runnable,可以将其提交给ExecutorService执行。
4. 使用线程池:Java的Executor框架提供了一种更高效和灵活的线程管理方式,通过`ExecutorService`创建线程池,可以复用线程并控制并发程度,比如使用`ThreadPoolExecutor`。
线程池有五种状态:
1. Running:正常运行,接收新任务并处理队列中的任务。
2. Shutdown:不再接受新任务,但会处理队列中的任务,由调用`shutdown()`方法触发。
3. Stop:不再接受新任务,也不处理队列中的任务,由调用`shutdownNow()`方法触发。
4. Tidying:所有工作线程都已终止,正准备调用`terminated()`方法。
5. Terminated:调用`terminated()`方法后进入的状态,线程池完全关闭。
JDK、JRE和JVM之间的关系:
JDK(Java Development Kit)是Java开发工具包,包含JRE(Java Runtime Environment)以及开发所需的工具,如编译器`javac`、Javadoc、JAR打包工具等。
JRE(Java Runtime Environment)是Java运行环境,用于执行Java应用程序,它包括JVM(Java Virtual Machine)和其他运行时所需的库。
JVM是JRE的一部分,它是运行Java字节码的虚拟机,负责解释和执行字节码。
`hashCode()`和`equals()`方法:
`hashCode()`方法返回对象的哈希码,用于在哈希表中快速定位对象。两个对象的`hashCode()`相等并不意味着它们是同一个对象,还需通过`equals()`方法进行比较。`equals()`方法用来判断两个对象是否逻辑上相等,通常需要在重写`equals()`方法时也重写`hashCode()`,以保持一致性。
`String`、`StringBuffer`和`StringBuilder`的区别:
1. `String`是不可变对象,修改操作会创建新对象,适合不可变数据。
2. `StringBuffer`是线程安全的,适用于多线程环境下的字符串拼接。
3. `StringBuilder`是线程不安全的,性能优于`StringBuffer`,在单线程环境中更推荐使用。
泛型中的`extends`和`super`:
1. `<? extends T>`限制了类型参数只能是T或其子类,适用于读取操作,比如`List<? extends Animal>`可以赋值给`List<Dog>`,但不能向其中添加`Animal`或`Dog`。
2. `<? super T>`限制了类型参数只能是T或其父类,适用于写入操作,比如`List<? super Dog>`可以赋值给`List<Animal>`,可以向其中添加`Dog`或`Animal`,但无法读取元素的准确类型。
2022-06-16 上传
2023-11-28 上传
2023-07-13 上传
2023-02-24 上传
2023-06-10 上传
2023-09-16 上传
2023-09-04 上传
2023-07-29 上传
2023-05-30 上传
红红火火a
- 粉丝: 21
- 资源: 1813
最新资源
- 掌握数学建模:层次分析法详细案例解析
- JSP项目实战:广告分类系统v2.0完整教程
- 如何在没有蓝牙的PC上启用并使用手机蓝牙
- SpringBoot与微信小程序打造游戏助手完整教程
- 高效管理短期借款的Excel明细表模板
- 兄弟1608/1618/1619系列复印机维修手册
- 深度学习模型Sora开源,革新随机噪声处理
- 控制率算法实现案例集:LQR、H无穷与神经网络.zip
- Java开发的HTML浏览器源码发布
- Android闹钟程序源码分析与实践指南
- H3C S12500R升级指南:兼容性、空间及版本过渡注意事项
- Android仿微信导航页开门效果实现教程
- 深度研究文本相似度:BERT、SentenceBERT、SimCSE模型分析
- Java开发的zip压缩包查看程序源码解析
- H3C S12500S系列升级指南及注意事项
- 全球海陆掩膜数据解析与应用