邹平做网站哪家好/广州seo推荐
其他资料:
每日速记10道java面试题01-CSDN博客
每日速记10道java面试题02-CSDN博客
每日速记10道java面试题03-CSDN博客
每日速记10道java面试题04-CSDN博客
每日速记10道java面试题05-CSDN博客
每日速记10道java面试题06-CSDN博客
目录
1.线程的生命周期在java中是怎样的?
2.java中如何创建多线程?
3.你了解java线程池的原理吗?
4.换做是你,你会如何设置java线程池的数量?
5.java线程池有哪些拒绝策略?
6.java并发库中提供了哪些线程池?
7.java线程池中shutdown和shutdownNow的区别?
8.Java 中的 DelayQueue 和 ScheduledThreadPool 有什么区别?
9.你了解java中的读写锁吧?
10.说一说读写锁的原理
1.线程的生命周期在java中是怎样的?
在 Java 中,线程的生命周期可以细化为以下几个状态:
New(初始状态):线程对象创建后,但未调用 start0方法。
Runnable(可运行状态):调用 start()方法后,线程进入就绪状态,等待 CPU 调度。
Blocked(阻塞状态):线程试图获取一个对象锁而被阻塞。
Waiting(等待状态):线程进入等待状态,需要被显式唤醒才能继续执行。
Timed Waiting(含等待时间的等待状态):线程进入等待状态,但指定了等待时间,超时后会被唤醒。
Terminated(终止状态):线程执行完成或因异常退出。
2.java中如何创建多线程?
1)继承Thread类:用户自定义继承Java.lang.Thread类,重写run方法,在run方法里面定义线程的具体实现,创建该类的实例后,通过start方法启动线程。
优点:编写简单
缺点:继承了Thread类,所以不能再继承其他类,功能比较局限
2)实现Runnable接口:用户自定义实现java.lang.Runnable接口,重写run方法,此后将runnable对象作为参数传递给thread类的构造器,创建thread对象后再调用start方法启动线程。
优点:可以继承其他的类,而且在这种方式下,可以多个线程共享同一个目标对象,非常适合多个相同线程处理同一份资源的情况,体现了面向对象的思想。
缺点:相比较第一种方法编程略微复杂。
3)实现callable接口与FutureTask:Callable接口与runnable类似,但callable的call方法可以有返回值且可以抛出异常,要执行callable任务,需要把他包装进一个FutureTask中来实现。
优点缺点也是和runnable类似,优点是可以实现多线程处理同一份资源,缺点是编程稍微复杂。
4)使用线程池(Executor框架):可以通过Executors类的静态方法创建不同类型的线程池。
优点:线程池可以重用预先创建的线程,避免了线程创建和销毁的开销,提高了程序的性能;而且通过合理配置线程池大小,可以最大化CPU利用率和系统吞吐量。
缺点:增加了程序的复杂度。
延伸→这边面试官可能就会问你关于线程池的问题了。
3.你了解java线程池的原理吗?
线程池使用原理:先使用核心线程数量,当核心线程数量用完后,使用队列存储线程,不同的线程池内置的队列长度不同,存在无限制长的队列也存在容量为0的队列,当队列长度消耗光的时候会去使用最大线程池数量,最大线程池数量用完后会触发线程池拒绝策略,一共有4种拒绝策略,默认抛出异常,第二种会将当前任务交给父线程执行,阻塞向线程池添加的速度,第三种是抛弃最早的线程重新加入线程队列,第四种是直接抛弃新来的线程调最早的线程。
用通俗易懂的话来理解就是:
线程池可以理解为,去银行办理业务:默认有6个柜台,当没有人去银行办理业务时候,柜台小姐姐都是拉呱玩耍的,有人去办理业务,先开三个柜台来办理业务,若三个柜台都有人在办理业务,那来的人先去等候区,若此时等候区也满了,就去新开另外三个柜台,随着办理业务人员增多,新开的柜台也都有人在办理业务,排队等候区也满了,那你还来办理业务??想搞事呢??明天再来或者去前面找个人插队,把第一个等候区的人赶走……,这就是经理的拒绝策略。
延伸→这时候面试官可能会问:换做是你,你会如何设置java线程池的数量?
4.换做是你,你会如何设置java线程池的数量?
对于不同类型的任务,线程数设置不同
如果是cpu密集型的任务,一般i/o开销较小,可以充分利用cpu资源,线程数就是cpu核心数+1
IO密集型任务,会因为i/o阻塞,导致无法高效利用cpu,如果任务较多,就需要更多的线程,一般就是cpu核心数*2
以上的公式都只是一个理论值,实际情况还得具体情况具体分析,例如机器性能、预期CPU利用率等等,并不是写死的一个数。
5.java线程池有哪些拒绝策略?
abort: 默认。抛异常。适用于要通知调用者任务没有被执行的场景。
callerRuns:调用者处理任务,哪个线程提交的任务,哪个线程自己执行。
DiscardOldest:扔掉任务队列里面排队时间最长的。适用于丢弃老的任务,处理重要的新任务的场景。
discard: 直接静悄悄的扔掉。适用于丢掉任务没有任何影响的场景。
6.java并发库中提供了哪些线程池?
Executors类提供五种静态工厂方法用于创建不同类型的线程池。
固定线程池的核心和最大线程数相同,队列无界,适合于数量确定的稳定任务,但可能导致内存溢出。
工作窃取池是在JDK8引入的,利用ForkoinPool实现,能在处理完自己的任务后去其他线程的队列中窃取任务。
单线程池中只有一个线程,能按顺序执行任务,适合需要顺序执行的场景。
缓存线程池的核心线程数为0,最大线程数可以无限,适合短时间大量短任务的场景,但可能导致频繁的上下文切换。
计划线程池用于需要定时或周期性执行任务,底层使用DelavedWorkQueue实现延时任务。
7.java线程池中shutdown和shutdownNow的区别?
1.shutdown会关闭线程池,拒绝接收新的任务,会把任务队列中的任务执行完再关闭。适用于程序需要平滑停止线程池的场景,如应用程序正常退出时。保证所有已提交的任务都能执行完毕,避免任务丢失。
2.shutdownNow:强制关闭线程池,将任务队列的任务返回,清空任务队列,强制中断当前执行的任务,但是不一定保证百分百中断成功 。适用于紧急情况或需要立即停止线程池的场景,如应用程序异常退出时。快速清理资源,但可能导致部分任务未完成。
shutdown就好比餐厅快打烊了,拒绝接新客,但会把已经在店的客人招待完了才关门。
shutdownNow就好比餐厅着火了,直接把客人们赶走关门了,但可能会导致部分客人没吃完饭。
8.Java 中的 DelayQueue 和 ScheduledThreadPool 有什么区别?
DelayQueue 是一个阻塞队列,而 ScheduledThreadPool是线程池,不过内部核心原理都是差不多的。
DelayQueue 是利用优先队列存储元素,当从队列中获取任务的时候,如果最老的任务已经到了执行时间,可以从队列中出队一个任务,反之可以获得 null 或者阻塞等待任务到时。
ScheduledThreadPool内部也使用的一个优先队列 DelayedWorkQueue 且可以内部多线程执行任务,支持定时执行的任务,即每隔一段时间执行一次的任务。
9.你了解java中的读写锁吧?
读写锁,它允许多个线程同时读取共享资源,而在写操作时确保只有一个线程能够进行写操作(读读操作不互斥,读写互斥、写写互斥)。这种机制适合于读多写少的场景,因为它提高了系统的并发性和性能。Java 中的 ReadwriteLock 是通过 ReentrantReadwriteLock 实现的,它提供了以下两种锁模式:
读锁(共享锁)允许多个线程同时获取读锁,只要没有任何线程持有写锁。适合读操作频繁而写操作较少的场景。
写锁(独占锁)写锁是独占的,当有线程持有写锁时,其他线程既不能获取写锁,也不能获取读锁。写锁用于保证写操作的独占性,防止数据不一致。
这里面试官大概率会延伸问读写锁的原理,如果没有自己能说出来就是加分!
10.说一说读写锁的原理
可以参考以下博文:读写锁详解_读写锁的实现原理-CSDN博客
相关文章:

每日速记10道java面试题07
其他资料: 每日速记10道java面试题01-CSDN博客 每日速记10道java面试题02-CSDN博客 每日速记10道java面试题03-CSDN博客 每日速记10道java面试题04-CSDN博客 每日速记10道java面试题05-CSDN博客 每日速记10道java面试题06-CSDN博客 目录 1.线程的生命周期在j…...

前端面试热门题(二)[html\css\js\node\vue)
Vue 性能优化的方法 Vue 性能优化的方法多种多样,以下是一些常用的策略: 使用v-show替换v-if:v-show是通过CSS控制元素的显示与隐藏,而v-if是通过操作DOM来控制元素的显示与隐藏,频繁操作DOM会导致性能下降。因此&am…...

mvc基础及搭建一个静态网站
mvc asp.net core mvc环境 .net8vscode * Asp.Net Core 基础* .net8* 前辈* .net 4.9 非跨平台版本 VC* 跨平台版本* 1.0* 2.0* 2.1* 3.1* 5* 语言* C#* F# * Visual Basic* 框架* web应用* asp应用* WebFrom* mvc应用* 桌面应用* Winform* WPF* Web Api api应用或者叫服务* …...

AOSP的同步问题
repo sync同步时提示出错: error: .repo/manifests/: contains uncommitted changesRepo command failed due to the following UpdateManifestError errors: contains uncommitted changes解决方法: 1、cd 进入.repo/manifests cd .repo/manifests2、执行如下三…...

HarmonyOS4+NEXT星河版入门与项目实战(23)------实现手机游戏摇杆功能
文章目录 1、案例效果2、案例实现1、代码实现2、代码解释4、总结1、案例效果 2、案例实现 1、代码实现 代码如下(示例): import router from @ohos.router import {ResizeDirection } from @ohos.UiTest import curves...

Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计)
Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计) 逻辑回归(Logistic Regression,LR)逻辑回归的基本思想逻辑回归模型逻辑回归的目标最大似然估计优化方法 逻辑回归…...

Vue文字转语音实现
在开发流程中,面对语音支持的需求,小规模语音内容或许可以通过预处理后播放来轻松应对,但当涉及大量语音时,这一方法就显得繁琐低效了。为此,智慧的开发者们总能找到便捷的解决方案——利用Web技术实现语音播放&#x…...

Docker快速部署RabbitMq
在外网服务器拉取镜像 docker pull arm64v8/rabbitmq:3.8.9-management或者拉去我的服务器的 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_rabbitmq:3.8.9-management重新命名 docker tag registry.cn-hangzhou.aliyuncs.com/qiluo-images/lin…...

glog在vs2022 hello world中使用
准备工作 设置dns为阿里云dns 223.5.5.5,下载cmake,vs2022,git git clone https://github.com/google/glog.git cd glog mkdir build cd build cmake .. 拷贝文件 新建hello world并设置 设置预处理器增加GLOG_USE_GLOG_EXPORT;GLOG_NO_AB…...

[241129] Docker Desktop 4.36 发布:企业级管理功能、WSL 2 增强 | Smile v4.0.0 发布
目录 Docker Desktop 4.36 发布:企业级管理功能、WSL 2 和 ECI 增强Smile v4.0.0 发布!Java 机器学习库迎来重大升级 Docker Desktop 4.36 发布:企业级管理功能、WSL 2 和 ECI 增强 Docker Desktop 4.36 带来了强大的更新,简化了…...

CentOS使用chrony服务进行时间同步源设置脚本
CentOS使用chrony服务进行时间同步源设置脚本 #!/bin/bash# Created: 2024-11-26 # Function: Check and Set OS time sync source to 10.0.11.100 # FileName: centos_set_time_source_to_ad.sh # Creator: Anster # Usage: # curl http://webserver-ip/scripts/centos_set…...

Git仓库迁移到远程仓库(源码、分支、提交)
单个迁移仓库 一、迁移仓库 1.准备工作 > 手动在电脑创建一个临时文件夹,CMD进入该目录 > 远程仓库上创建一个同名的空仓库 2.CMD命令:拉取旧Git仓库(包含提交、分支、源码) $ git clone --bare http://git.domain.cn/…...

【算法刷题指南】优先级队列
🌈个人主页: 南桥几晴秋 🌈C专栏: 南桥谈C 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据…...

使用pymupdf提取PDF文档中的文字和其颜色
最近我在捣鼓一个PDF文件,想把它里面的文字和文字颜色给提取出来。后来发现有个叫pymupdf的库能搞定这事儿。操作起来挺简单的,pymupdf的示例文档里就有现成的代码可以参考。 how-to-extract-text-with-color 我本地的测试代码如下: impor…...

贪心算法题
0简介 0.1什么是贪心算法 贪心算法是用贪婪(鼠目寸光)的角度,找到解决问题的最优解 贪心策略:(从局部最优 --> 整体最优) 1把解决问题的过程分为若干步; 2解决每一个问题时,都选择当前“看上去”最优的解法; 3“…...

Python 3 教程第33篇(MySQL - mysql-connector 驱动)
Python MySQL - mysql-connector 驱动 MySQL 是最流行的关系型数据库管理系统,如果你不熟悉 MySQL,可以阅读我们的 MySQL 教程。 本章节我们为大家介绍使用 mysql-connector 来连接使用 MySQL, mysql-connector 是 MySQL 官方提供的驱动器。…...

23种设计模式之外观模式
目录 1. 简介2. 代码2.1 SelectFoodService (选择食品)2.2 PayService (支付服务)2.3 TakeService (制作服务)2.4 OrderService (下单服务)2.5 Food (食品)2.6 TackingSystem (外观类)2.7 Test (测试类) 3. 优缺点3. 总结 1. 简介…...

GateWay使用手册
好的,下面是优化后的版本。为了提高可读性和规范性,我对内容进行了结构化、简化了部分代码,同时增加了注释说明,便于理解。 1. 引入依赖 在 pom.xml 中添加以下依赖: <dependencies><!-- Spring Cloud Gate…...

MySQL1.0
1.数据库的三大范式 范式是为了使数据库设计更加合理,规范,减少数据冗余和数据不一致等问题指定的一系列规则。 第一范式:第一范式要求数据表中的每一列都是不可分割的原子数据项。例如:有一个学生信息表,包含 “学生…...

IDEA使用HotSwapHelper进行热部署
目录 前言JDK1.8特殊准备DECVM安装插件安装与配置参考文档相关下载 前言 碰到了一个项目,用jrebel启动项目时一直报错,不用jrebel时又没问题,找不到原因,又不想放弃热部署功能 因此思考能否通过其他方式进行热部署,找…...

简单web项目自定义部署Dockerfile
本意就是弄清楚如何做web自定义项目的镜像。 基础镜像是java:8u261-jdk,其中java路径为/opt/java webdemo1.0.0.1-SNAPSHOT.jar文件里面已经包含了lib文件。 可以设置PATH也可以不设置,但是建议设置JAVA_HOME FROM swr.cn-north-4.myhuaweicloud.com…...

基础Web安全|SQL注入
基础Web安全 URI Uniform Resource Identifier,统一资源标识符,用来唯一的标识一个资源。 URL Uniform Resource Locator,统一资源定位器,一种具体的URI,可以标识一个资源,并且指明了如何定位这个资源…...

SpringBoot -拦截器Interceptor、过滤器 Filter 及设置
Spring Boot拦截器(Interceptor)的概念 - 在Spring Boot中,拦截器是一种AOP的实现方式。它主要用于<font style"color:#DF2A3F;">拦截请求</font>,在请求处理之前和之后执行特定的代码逻辑。与过滤器不同的…...

C++小问题
怎么分辨const修饰的是谁 是限定谁不能被改变的? 在C中,const关键字的用途和位置非常关键,它决定了谁不能被修改。const可以修饰变量、指针、引用等不同的对象,并且具体的作用取决于const的修饰位置。理解const的规则能够帮助我们…...

avcodec_alloc_context3,avcodec_open2,avcodec_free_context,avcodec_close
avcodec_alloc_context3 是创建编解码器上下文,需要使用 avcodec_free_context释放 需要使用avcodec_free_context 释放 /** * Allocate an AVCodecContext and set its fields to default values. The * resulting struct should be freed with avcodec_free_co…...

强化学习的几个主要方法(策略梯度、PPO、REINFORCE实现等)(下)
由于平台字数限制,上文:https://blog.csdn.net/ooblack/article/details/144198538 4. PPO算法 近端策略优化(proximal policy optimization,PPO)算法是OpenAI的默认强化学习算法,在RLHF中也用到了这个算…...

计算机网络:IP协议详细讲解
目录 前言 一、IP网段划分 二、IP报头 三、解决IP地址不足-->NAT技术 前言 在之前,我们学习了传输层中的TCP和UDP,重点是TCP协议,他帮我们解决具体到主机的哪个应用(端口)、传输的可靠(序列号、校验和…...

2024信创数据库TOP30之华为Gauss DB
近日,由DBC联合CIW/CIS共同发布的“2024信创数据库TOP30”榜单正式揭晓,汇聚了国内顶尖的数据库企业及其产品,成为展示中国信创领域技术实力与发展潜力的重要平台。在这份榜单中,华为的GaussDB凭借其卓越的技术实力、广泛的行业应…...

在线家具商城基于 SpringBoot:设计模式与实现方法探究
第3章 系统分析 用户的需求以及与本系统相似的在市场上存在的其它系统可以作为系统分析中参考的资料,分析人员可以根据这些信息确定出本系统具备的功能,分析出本系统具备的性能等内容。 3.1可行性分析 尽管系统是根据用户的要求进行制作,但是…...

九、Spring Boot集成Spring Security之授权概述
文章目录 往期回顾:Spring Boot集成Spring Security专栏及各章节快捷入口前言一、授权概述二、用户权限三、用户授权流程三、Spring Security授权方式1、请求级别授权2、方法级别授权 往期回顾:Spring Boot集成Spring Security专栏及各章节快捷入口 Spr…...