java面试题
文章平均质量分 88
中北萌新程序员
这个作者很懒,什么都没留下…
展开
-
每日五道java面试题之ZooKeeper篇(三)
zookeeper 采用了全局递增的事务 Id 来标识,所有的 proposal(提议)都在被提出的时候加上了 zxid,zxid 实际上是一个 64 位的数字,高 32 位是epoch( 时期;∙ 场景:当新的 Leader 服务器发现某个 Learner 服务器包含了一条自己没有的事务记录,那么就需要让该 Learner 服务器进行事务回滚–回滚到 Leader服务器上存在的,同时也是最接近于 peerLastZxid 的 ZXID仅回滚同步(TRUNC 同步)表明当前服务器角色是 Leader。原创 2024-04-06 14:03:53 · 885 阅读 · 0 评论 -
每日五道java面试题之ZooKeeper篇(二)
接收到客户端请求,处理请求判断是否需要注册 Watcher,需要的话将数据节点的节点路径和 ServerCnxn(ServerCnxn 代表一个客户端和服务端的连接,实现了 Watcher 的 process 接口,此时可以看成一个 Watcher 对象)存储在WatcherManager 的 WatchTable 和 watch2Paths 中去。(3)World:最开放的权限控制方式,是一种特殊的 digest 模式,只有一个权限标识“world:anyone”是一种粗粒度的文件系统权限控制模式。原创 2024-04-04 23:25:02 · 983 阅读 · 0 评论 -
每日五道java面试题之ZooKeeper篇(一)
(4)watcher event 异步发送 watcher 的通知事件从 server 发送到 client 是异步的,这就存在一个问题,不同的客户端和服务器之间通过 socket 进行通信,由于网络延迟或其他因素导致客户端在不通的时刻监听到事件,由于Zookeeper 本身提供了 ordering guarantee,即客户端监听事件后,才会感知它所监视 znode发生了变化。实现这个机制的协议叫做 Zab 协议。因此,随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。原创 2024-04-04 21:40:18 · 1068 阅读 · 0 评论 -
每日五道java面试题之消息中间件MQ篇(三)
跟普通集群模式不一样的是,在镜像集群模式下,你创建的 queue,无论元数据还是queue 里的消息都会存在于多个实例上,就是说,每个 RabbitMQ 节点都有这个 queue 的一个完整镜像,包含 queue 的全部数据的意思。RabbitMQ 有很好的管理控制台,就是在后台新增一个策略,这个策略是镜像集群模式的策略,指定的时候是可以要求数据同步到所有节点的,也可以要求同步到指定数量的节点,再次创建 queue 的时候,应用这个策略,就会自动将数据同步到其他的节点上去了。点以后,用户都睡觉了。原创 2024-04-02 21:54:53 · 865 阅读 · 0 评论 -
每日五道java面试题之消息中间件MQ篇(二)
2.消息的消费者(consumer) 监听 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患 消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失,这里可以设置成手动的ack,但如果设置成手动ack,处理完后要及时发送ack消息给队列,否则会造成内存溢出)。1.消息生产者将消息发送给交换机按照路由判断,路由是字符串(info) 当前产生的消息携带路由字符(对象的方法),交换机根据路由的key,只能匹配上路由key对应的消息队列,对应的消费者才能消费消息;原创 2024-04-02 21:33:22 · 733 阅读 · 0 评论 -
每日五道java面试题之消息中间件MQ篇(一)
所以消息队列实际是一种非常复杂的架构,你引入它有很多好处,但是也得针对它带来的坏处做各种额外的技术方案和架构来规避掉,做好之后,你会发现,妈呀,系统复杂度提升了一个数量级,也许是复杂了 10 倍。但是关键时刻,用,还是得用的。除此之外,RabbitMQ的开源社区很活跃,较高频率的迭代版本,来修复发现的bug以及进行各种优化,因此综合考虑过后,公司采取了RabbitMQ。然后可以聊聊RocketMQ,是阿里开源的,经过阿里的生产环境的超高并发、高吞吐的考验,性能卓越,同时还支持分布式事务等特殊场景。原创 2024-03-31 09:36:34 · 1081 阅读 · 0 评论 -
每日五道java面试题之springboot篇(五)
在微服务中,一个完整的项目被拆分成多个不相同的独立的服务,各个服务独立部署在不同的服务器上,各自的 session 被从物理空间上隔离开了,但是经常,我们需要在不同微服务之间共享 session ,常见的方案就是 SpringSession + Redis 来实现 session 共享。普通的 jar 包,解压后直接就是包名,包里就是我们的代码,而 Spring Boot打包成的可执行 jar 解压后,在 \BOOT-INF\classes 目录下才是我们的代码,因此无法被直接引用。原创 2024-03-31 09:26:14 · 847 阅读 · 0 评论 -
每日五道java面试题之springboot篇(四)
Spring Boot Batch 提供可重用的函数,这些函数在处理大量记录时非常重要,包括日志/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理。它还提供了更先进的技术服务和功能,通过优化和分区技术,可以实现极高批量和高性能批处理作业。简单以及复杂的大批量批处理作业可以高度可扩展的方式利用框架处理重要大量的信息。FreeMarker 是一个基于 Java 的模板引擎,最初专注于使用 MVC 软件架构进行动态网页生成。使用 Freemarker 的主要优点是表示层和业务层的完全分离。原创 2024-03-24 22:03:06 · 887 阅读 · 0 评论 -
每日五道java面试题之springboot篇(三)
WebSocket 是一种计算机通信协议,通过单个 TCP 连接提供全双工通信信道。1、WebSocket 是双向的 -使用 WebSocket 客户端或服务器可以发起消息发送。2、WebSocket 是全双工的 -客户端和服务器通信是相互独立的。3、单个 TCP 连接 -初始连接使用 HTTP,然后将此连接升级到基于套接字的连接。然后这个单一连接用于所有未来的通信4、Light -与 http 相比,WebSocket 消息数据交换要轻得多。原创 2024-03-23 18:51:16 · 709 阅读 · 0 评论 -
每日五道java面试题之springboot篇(二)
CSRF 代表跨站请求伪造。这是一种攻击,迫使最终用户在当前通过身份验证的Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应。原创 2024-03-22 23:36:12 · 846 阅读 · 0 评论 -
每日五道java面试题之springboot篇(一)
Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯Java 方法。因此它有助于避免使用 XML配置。使用 JavaConfig 的优点在于:(1)面向对象的配置。原创 2024-03-22 22:17:55 · 872 阅读 · 0 评论 -
每日五道java面试题之mybatis篇(六)
MyBatis中有⼀些⽀持动态SQL的标签,它们的原理是使⽤OGNL从SQL参数对象中计算表达式的值,根据表达式的值动态拼接SQL,以此来完成动态SQL的功能。choose (when, otherwise)这个和Java 中的 switch 语句有点像trim (where, set)< where>可以⽤在所有的查询条件都是动态的情况< set> 可以⽤在动态更新的时候foreach看到名字就知道了,这个是⽤来循环的,可以对集合进⾏遍历第二题. 说说Mybat原创 2024-03-21 20:54:01 · 896 阅读 · 0 评论 -
每日五道java面试题之mybatis篇(五)
在多对一关系中,一个实体对象可以关联到另一个实体对象,但是另一个实体对象只能关联到一个实体对象。比如,订单(Order)和客户(Customer)之间的关系。在多对多关系中,一个实体对象可以关联到多个另一个实体对象,反之亦然。第1种: 通过在查询的SQL语句中定义字段名的别名,让字段名的别名和实体类的属性名⼀致。第2种: 通过resultMap 中的来映射字段名和实体类属性名的⼀⼀对应的关系。当然可以,不⽌⽀持⼀对⼀、⼀对多的关联查询,还⽀持多对多、多对⼀的关联查询。⽐如商品分类和商品,是⼀对多的关系。原创 2024-03-19 21:39:03 · 1092 阅读 · 0 评论 -
每日五道java面试题之mybatis篇(四)
但batch模式也有自己的问题,比如在Insert操作时,在事务没有提交之前,是没有办法获取到自增的id,这在某型情形下是不符合业务要求的。}解析成sql语句时候,会在变量外侧自动加单引号’ ',所以这里 % 需要使用双引号" ",不能使用单引号 ’ ',不然会查不到任何结果。foreach标签的属性主要有item,index,collection,open,separator,close。这种方法直观,需要建一个实体类,扩展不容易,需要加属性,但代码可读性强,业务逻辑处理方便,推荐使用。原创 2024-03-17 21:07:54 · 870 阅读 · 0 评论 -
每日五道java面试题之mybatis篇(三)
它的原理是,使用CGLIB创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用a.getB().getName(),拦截器invoke()方法发现a.getB()是null值,那么就会单独发送事先保存好的查询关联B对象的sql,把B查询上来,然后调用a.setB(b),于是a的对象b属性就有值了,接着完成a.getB().getName()方法的调用。MyBatis的初始化,会从mybatis-config.xml配置文件,解析构造成Configuration这个类,就是图中的红框。原创 2024-03-17 20:48:30 · 687 阅读 · 0 评论 -
每日五道java面试题之mybatis篇(二)
MyBatis 是一个小巧、方便、高效、简单、直接、半自动化的持久层框架,Hibernate 是一个强大、方便、高效、复杂、间接、全自动化的持久层框架。原创 2024-03-17 18:38:06 · 776 阅读 · 0 评论 -
每日五道java面试题之mybatis篇(一)
ORM(Object Relational Mapping),对象关系映射,是一种为了解决关系型数据库数据与简单Java对象(POJO)的映射关系的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系型数据库中。Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成,所以,称之为半自动ORM映射工具。原创 2024-03-17 17:05:38 · 1056 阅读 · 0 评论 -
每日五道java面试题之springMVC篇(四)
String(request.getParamter(“userName”).getBytes(“ISO8859-1”),“utf-8”)ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码。(2)重定向:在返回值前面加"redirect:“,譬如"redirect:http://www.baidu.com”(1)转发:在返回值前面加"forward:“,譬如"forward:user.do?(2)在配置文件中配置json的映射。(1)加入Jackson.jar。原创 2024-03-15 17:31:11 · 776 阅读 · 0 评论 -
每日五道java面试题之springMVC篇(三)
在Spring MVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。原创 2024-03-15 17:22:09 · 1282 阅读 · 0 评论 -
每日五道java面试题之springMVC篇(二)
注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。mvc是一种设计模式(设计模式就是日常开发中编写代码的一种好的方法和经验的总结)。模型(model)-视图(view)-控制器(controller),三层架构的设计模式。(3)处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;1.分层设计,实现了业务系统各个组件之间的解耦,有利于业务系统的可扩展性,可维护性。原创 2024-03-10 19:33:34 · 1325 阅读 · 0 评论 -
每日五道java面试题之springMVC篇(一)
Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。Spring的MVC框架是围绕DispatcherServlet来设计的,它用来处理所有的HTTP请求和响应。控制器提供一个访问应用程序的行为,此行为通常通过服务接口实现。控制器解析用户输入并将其转换为一个由视图呈现给用户的模型。原创 2024-03-07 22:16:45 · 891 阅读 · 0 评论 -
每日五道java面试题之mysql数据库篇(六)
死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环的现象。常见的解决死锁的方法如果不同程序会并发存取多个表,尽量约定以相同的顺序访问表,可以大大降低死锁机会。在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁产生概率;对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率;如果业务处理不好可以用分布式事务锁或者使用乐观锁为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。原创 2024-03-05 23:14:13 · 779 阅读 · 0 评论 -
每日五道java面试题之mysql数据库篇(五)
事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。原子性。原创 2024-03-05 20:39:59 · 691 阅读 · 0 评论 -
每日五道java面试题之mysql数据库篇(四)
聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行,myisam通过key_buffer把索引先缓存到内存中,当需要访问数据时(通过索引访问数据),在内存中直接搜索索引,然后通过索引找到磁盘相应数据,这也就是为什么索引不在key buffer命中时,速度慢的原因澄清一个概念。原创 2024-03-04 22:15:16 · 751 阅读 · 0 评论 -
每日五道java面试题之mysql数据库篇(三)
顾名思义,就是最左优先,在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、 3 and d = 4如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。原创 2024-03-03 19:20:56 · 1179 阅读 · 0 评论 -
每日五道java面试题之mysql数据库篇(二)
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。原创 2024-03-02 22:43:33 · 746 阅读 · 0 评论 -
每日五道java面试题之mysql数据库篇(一)
如果执行大量的查询,MyISAM更好,在执行增删改的时候,需要锁定整个表,效率更低InnoDB支持行级锁,在删除插入的时候只需要锁定操作行就行。在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。存储引擎Storage engine:MySQL中的数据、索引以及其他对象是如何存储的,是一套文件系统的实现。此外,新版的MySQL中对row级别也做了一些优化,当表结构发生变化的时候,会记录语句而不是逐行记录。第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。原创 2024-03-01 21:10:16 · 855 阅读 · 1 评论 -
每日五道java面试题之spring篇(十)
aspect 由 pointcount 和 advice 组成,切面是通知和切点的结合。它既包含了横切逻辑的定义, 也包括了连接点的定义. Spring AOP 就是负责实施切面的框架, 它将切面所定义的横切逻辑编织到切面所指定的连接点中.如何通过 pointcut 和 advice 定位到特定的 joinpoint 上如何在 advice 中编写切面代码.可以简单地认为, 使用 @Aspect 注解的类就是切面.原创 2024-02-29 20:24:20 · 993 阅读 · 0 评论 -
每日五道java面试题之spring篇(九)
(2)Spring AOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改字节码,而是每次运行时在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全部方法,并且在特定的切点做了增强处理,并回调原对象的方法。(1)AspectJ是静态代理的增强,所谓静态代理,就是AOP框架会在编译阶段生成AOP代理类,因此也称为编译时增强,他会在编译阶段将AspectJ(切面)织入到Java字节码中,运行的时候就是增强之后的AOP对象。(1)切面(Aspect):切面是通知和切点的结合。原创 2024-02-28 21:34:45 · 1146 阅读 · 0 评论 -
每日五道java面试题之spring篇(八)
在启动spring IoC时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到@Autowied、@Resource或@Inject时,就会在IoC容器自动查找需要的bean,并装配给该对象的属性。它为 DAO 提供了额外的好处。这个注解表明bean的属性必须在配置的时候设置,通过一个bean定义的显式的属性值或通过自动装配,若@Required注解的bean属性未被设置,容器将抛出BeanInitializationException。原创 2024-02-27 19:51:56 · 973 阅读 · 0 评论 -
每日五道java面试题之spring篇(七)
Spring beans 是那些形成Spring应用的主干的java对象。它们被Spring IOC容器初始化,装配,和管理。这些beans通过容器中配置的元数据创建。比如,以XML文件中 的形式定义。一个Spring Bean 的定义包含容器必知的所有配置元数据,包括如何创建一个bean,它的生命周期详情及它的依赖。当定义一个 在Spring里,我们还能给这个bean声明一个作用域。它可以通过bean 定义中的scope属性来定义。原创 2024-02-26 19:40:14 · 479 阅读 · 0 评论 -
每日五道java面试题之spring篇(六)
控制反转IoC是一个很大的概念,可以用不同的方式来实现。其主要实现方式有两种:依赖注入和依赖查找依赖注入:相对于IoC而言,依赖注入(DI)更加准确地描述了IoC的设计理念。所谓依赖注入(Dependency Injection),即组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。原创 2024-02-25 19:41:56 · 3531 阅读 · 0 评论 -
每日五道java面试题之spring篇(五)
控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。原创 2024-02-24 22:33:41 · 1397 阅读 · 0 评论 -
每日五道java面试题之spring篇(四)
这是基本的Spring模块,提供spring 框架的基础功能,BeanFactory 是 任何以。Spring 总共大约有 20 个模块, 由 1300 多个不同的文件构成。spring为基础的应用的核心。IoC让相互协作的组件保持松散的耦合,而AOP编程允许你把遍布于应用各层的。Bean 工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和。对象耦合关系的管理,并实现依赖反转,将对象之间的依赖关系交给IoC容器,以下是 Spring 5 的模块结构。创作不易,大家的支持就是我坚持下去的动力。原创 2024-02-23 22:50:15 · 817 阅读 · 0 评论 -
每日五道java面试题之spring篇(三)
springboot是spring提供的⼀个快速开发⼯具包,让程序员能更⽅便、更快速的开发spring+springmvc应⽤,简化了配置(约定了默认配置),整合了⼀系列的解决⽅案(starter机制)、redis、mongodb、es,可以开箱即⽤。spring是⼀个IOC容器,⽤来管理Bean,使⽤依赖注⼊实现控制反转,可以很⽅便的整合各种框架,提供AOP机制弥补OOP的代码重复问题、更⽅便将不同类不同⽅法中的共同处理抽取成切⾯、⾃动注⼊给⽅法执⾏,⽐如⽇志、异常等。如果我的内容对你有帮助,请。原创 2024-02-22 23:34:57 · 3330 阅读 · 0 评论 -
每日五道java面试题之spring篇(二)
开启⾃动装配,只需要在xml配置⽂件中定义“autowire”属性no – 缺省情况下,⾃动配置是通过“ref”属性⼿动设定。⼿动装配:以value或ref的⽅式明确指定属性值都是⼿动装配。需要通过‘ref’属性来连接bean。byName-根据bean的属性名称进⾏⾃动装配。Cutomer的属性名称是person,Spring会将bean id为person的bean通过setter⽅法进⾏⾃动装配。原创 2024-02-22 23:30:29 · 1313 阅读 · 0 评论 -
每日五道java面试题之spring篇(一)
● session:与request范围类似,确保每个session中有⼀个bean的实例,在session过期后,bean。作为bean,当在使⽤这个代理对象的⽅法时,如果这个⽅法上存在@Transactional注解,那么代理逻辑。如果你想要声明让所有的portlet共⽤全局的存储变量的话,那么这。引⼊IOC容器之后,对象A与对象B之间失去了直接联系,当对象A运⾏到需要对象B的时候,IOC容器会。全部对象的控制权全部上缴给“第三⽅”IOC容器,所以,IOC容器成了整个系统的关键核⼼,它起到了。原创 2024-02-21 15:54:00 · 715 阅读 · 0 评论 -
每日五道java面试题之java基础篇(十二)
1、⼀般的队列只能保证作为⼀个有限⻓度的缓冲区,如果超出了缓冲⻓度,就⽆法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续⼊队的任务。阻塞队列可以保证任务队列中没有任务时阻塞获取任务的线程,使得线程进⼊wait状态,释放cpu资源。阻塞队列⾃带阻塞和唤醒的功能,不需要额外处理,⽆任务执⾏时,线程池利⽤阻塞队列的take⽅法挂起,从⽽维持核⼼线程的存活、不⾄于⼀直占⽤cpu资源2、在创建新线程的时候,是要获取全局锁的,这个时候其它的就得阻塞,影响了整体效率。原创 2024-02-18 01:10:34 · 1071 阅读 · 0 评论 -
每日五道java面试题之java基础篇(十一)
任务拒绝策略,有两种情况,第⼀种是当我们调⽤ shutdown 等⽅法关闭线程池后,这时候即使线程池内部还有没执⾏完的任务正在执⾏,但是由于线程池已经关闭,我们再继续想线程池提交任务就会遭到拒绝。我们可以选择使⽤默认的创建⼯⼚,产⽣的线程都在同⼀个组内,拥有相同的优先级,且都不是守护线程。代表的是最⼤线程数,它与核⼼线程数相对应,表示最⼤允许被创建的线程数,⽐如当前任务较多,将核⼼线程数都⽤完了,还⽆法满⾜需求时,此时就会创建新的线程,但是线程池内线程总数不会超过最⼤线程数。3、提⾼线程的可管理性;原创 2024-02-17 00:59:06 · 881 阅读 · 0 评论 -
每日五道java面试题之java基础篇(十)
6. 等待阻塞:运⾏的线程执⾏wait⽅法,该线程会释放占⽤的所有资源,JVM会把该线程放⼊“等待池”中。● 第五:垃圾清理:与CMS不同的是,G1可以采⽤拷⻉算法,直接将整个Region中的对象拷⻉到另⼀个Region。7. 同步阻塞:运⾏的线程在获取对象的同步锁时,若该同步锁被别的线程占⽤,则JVM会把该线程放⼊“锁池”中。● 第⼆:标记Region,通过RSet标记出上⼀个阶段标记的Region引⽤到的Old区Region。● 第四:重新标记: 跟CMS中的重新标记过程是差不多的。原创 2024-02-16 23:53:15 · 1164 阅读 · 0 评论