Java面试题(刷题宝)第二天
1.Iterator怎么使用?有什么特点?
- Java中的Iterator功能比较简单,并且只能单向移动
- 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator方法是java.lang.Iterator接口,被Collection继承
- 使用net()获得序列中的下一个元素
- 使用hasNext()检查序列中是否还要元素
- 使用remove()迭代器最简单的实现,为List设计的Listiterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素
2.Iterator和ListIterator有什么区别
- wlterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List
- Iterator对集合只能是向前遍历,ListIterator既可以向前也可以向后
- ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,获取前一个和后一个元素的索引,等等
3.并行和并发有什么区别
- 并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生
- 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件
- 在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务,如hadoop分布式集群
4.多线程和进程的区别
- 进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程
- 进程在执行过程中拥有独立的内存单元,而多个线程共享内存资源,减少切换次数,从而效率更高。线程是进程的一个实体,是cpu调度和分派的基本单位,是比程序更少的能独立运行的基本单位
- 同一进程中的多个线程之间可以并发执行
5.守护线程是什么
- 守护线程(daemon thread),是个服务线程,准确地来说就是服务其他的线程
- 守护线程是在程序运行时提供后台服务的线程,不属于程序运行中不可或缺少的部分
- 当程序中所有非守护线程结束时,程序也就终止,同时杀死所有的守护线程
6.创建线程有哪几个方法
- 继承Tread类创建线程类
- 定义Tread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务
- 因此把run()方法称为执行体
- 创建Tread子类的实例,即创建了线程对像
- 调用线程对象的start()方法来启动该线程
- 通过Runnable接口创建线程类
- 定义runnable接口的实现类,并重写该接口的run()方法,该run()的方法体同样是该线程执行体
- 创建Runnable实现类的实例,并以此实例作为Tread的target来创建Tread对象,该Tread对象才是真正的线程对象
- 调用线程对象的start()方法来启动该线程
- 通过Callable和Futura创建线程
- 创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,并且有返回值
- 创建Callable实现类的实例,使用FuturaTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法返回值
- 使用FuturaTask对象作为Tread对象的taget创建并启动新线程
- 调用FuturaTask对象的get()方法来获得子线程执行结束后的返回值
7.runnable和callable有什么区别
- Runnable接口中的run()方法返回值是void,它做的事情只是纯粹地去执行run()方法中的代码而已
- Callable接口中的call()方法是返回值的,是一个泛型,和Future、FuturaTask配合可以用来获取异步执行的结果
posted @
2023-10-13 14:52
1999LIJIAN
阅读(
15)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现