当前位置: 首页 > news >正文

面试高频问题----5

一、线程池参数的执行顺序

1.如果线程池中的线程数量小于核心线程数,则创建新的线程来处理任务
2.如果线程池中的线程数量等于核心线程数,但工作队列未满,将任务放入工作队列中执行
3.如果工作队列已满,但线程数小于最大线程数,则创建新的线程来处理任务
4.如果线程数已达到最大线程数,且工作队列已满,则使用拒绝策略来处理该任务

二、多线程中继承Thread 类和实现Runnable 接口的区别

1.实现Runnable接口是代理模式,交给Thread()类去start;一个类继承Thread类后本身就是一个线程对象,可以直接start
2.实现Runnable接口可以在创建线程时Thread类的构造器设置线程名;继承Thread类可以super()调用父类构造器起名
3.由于java是单继承,一个类继承thread类后不能继承其他类,而实现runnable接口侧面实现多继承
4.继承thread类不能实现线程变量资源共享;实现runnable接口线程变量可以共享也可以不共享,看线程创建方式

三、redis集群相比哨兵模式的优缺点

1.数据分片:集群模式通过数据分片提高了系统的扩展性和性能,而哨兵模式没有数据分片功能,适合数据量较小的场景;
2.高可用性:哨兵模式主要提供高可用性,能够在主节点故障时迅速进行故障转移。集群模式也提供高可用性,但是它通过分片和多个副本来实现,比哨兵模式复杂;
3.写能力:集群模式由于数据分片,可以在多个节点上进行写操作,提高了写能力。哨兵模式的写能力受限于单个主节点。

四、线程池的拒绝策略

当线程池无法处理新任务时,会触发拒绝策略。
1.中止策略:直接抛出异常,这是默认策略,可以明确地感知到任务被拒绝;
2.调用者运行策略:直接在调用execute方法线程中运行被拒绝的任务。不会造成数据丢失,但可能会降低调用线程的功能;
3.丢弃策略:不处理也不抛出异常,直接丢弃任务。可能造成数据丢失,且调用者无法感知到任务被拒绝;
4.丢弃最旧策略:丢弃队列中等待时间最长的任务,并执行当前提交的任务,可能造成数据丢失但会腾出空间执行新任务。

五、多态

定义

  • 多态:指为不同数据类型的实体提供统一的接口

实现方式

  • 类的继承(虚方法):子类可以重写父类的虚方法,以实现多态。
  • 抽象类:抽象类定义了子类必须实现的方法,子类可以通过实现这些方法来实现多态。
  • 接口:接口定义了方法的签名,但不提供实现。实现接口的类必须提供这些方法的具体实现,从而实现多态。

好处

  1. 可替换性:多态使得代码更易于维护和扩展,因为可以轻松地替换实现细节而不影响整体结构。
  2. 可扩充性:添加新的子类不会影响已存在的多态性。
  3. 接口性:多态提供了一个共同接口,使得子类可以轻松地实现或覆盖这些方法。
  4. 灵活性:提高了代码的灵活性和可重用性。
  5. 简化性:简化了对应用软件的代码编写和修改过程。

相关文章:

  • django支持https
  • 【数据结构】平衡二叉树(AVL树)
  • 医疗实施-项目管理04-需求调研
  • 消息队列RabbitMQ
  • 45.报错信息:data 和varbinary在greater than中不兼容
  • css系列:进度条
  • 如何跨渠道分析销售数据 - 7年制造业销售经验小结
  • 数据库管理-第198期 升级Oracle ACE Pro,新赛季继续努力(20240605)
  • mac M1下安装PySide2
  • redis学习路线
  • 人工智能对话系统源码 手机版+电脑版二合一 全端支持 前后端分离 带完整的安装代码包以及搭建部署教程
  • 基于SpringBoot的装饰工程管理系统源码数据库
  • AI三巨擘或面临反垄断审查 | 百能云芯
  • Kotlin 异常处理
  • 动态语言的开源编译器汇总
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【mysql】环境安装、服务启动、密码设置
  • 【node学习】协程
  • Angular 4.x 动态创建组件
  • Centos6.8 使用rpm安装mysql5.7
  • es6要点
  • github从入门到放弃(1)
  • httpie使用详解
  • IOS评论框不贴底(ios12新bug)
  • Javascript基础之Array数组API
  • JSONP原理
  • Less 日常用法
  • vagrant 添加本地 box 安装 laravel homestead
  • 闭包--闭包作用之保存(一)
  • 官方解决所有 npm 全局安装权限问题
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​一些不规范的GTID使用场景
  • ‌[AI问答] Auto-sklearn‌ 与 scikit-learn 区别
  • #AngularJS#$sce.trustAsResourceUrl
  • #mysql 8.0 踩坑日记
  • #pragma multi_compile #pragma shader_feature
  • $ git push -u origin master 推送到远程库出错
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (2020)Java后端开发----(面试题和笔试题)
  • (力扣题库)跳跃游戏II(c++)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (十) 初识 Docker file
  • (实战篇)如何缓存数据
  • (转)jQuery 基础
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • ***利用Ms05002溢出找“肉鸡
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET COER+CONSUL微服务项目在CENTOS环境下的部署实践
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET开发人员必知的八个网站
  • [ C++ ] STL---string类的模拟实现