1_阿里Java客户面试问题汇总.docxVIP

  • 37
  • 0
  • 约3.73万字
  • 约 23页
  • 2019-04-18 发布于广东
  • 举报
信面试 1、线程怎么保持同步 使用synchronized关键字同步方法或代码 实现流程:1)、首先我们要知道什么是同步,就是有时候在进行多线程的程序设计中需要实现多个线程共享同一段代码。接下来就是怎么设置同步。2)、接下来第一步就是不要让多个线程无序地访问共享资源,对关键代码进行归结放在一个代码块,不要分离。3)、然后保持关键代码的原子性,只要有访问时,同时只有一个关键代码可以使用,这样就同步了。4)、接下来还是利用互斥锁实现关键代码的同步访问,采用同步法,对关键字修饰做出相关设置。5)、最后将每个线程的开始都从这个方法开始,这样只能等一个结束之后下一个再开始,这样就可以同步进行了。 2、spring中bean的周期是怎样的: 1)、实例化一个Bean(也就是new);2)、按照Spring上下文对实例化的bean进行配置(也就是IOC注入);3)、如果这个bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,此处传递的就是Spring配置文件中Bean的ID值; 4)、如果这个Bean已经实现了BeanFactoryAware接口,会调用它实现的setBeanFactory(BeanFactory),传递的是Spring工厂自身(可以用这个方式来获取其他的Bean,只需在Spring配置文件中配置一个普通的Bean就可以);5)、如果这个Bean已经实现了ApplicationContextAware接口,会调用setApplicationContext(ApplicationContex)方法,传入Spring上下文(同样这个方式也可以实现步骤4的内容,但比4更好,因为ApplicationContext是BeanFactory的子接口,有更多的实现方法);6)、如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessBeforeInitialization(Object obj,String s)方法,BeanPostProcessor经常被用作是Bean内容的更改,并且由于这个是在Bean初始化结束时调用的那个方法,也可以被应用于内存或缓存技术;7)、如果Bean在Spring配置文件中配置了init-method属性会自动调用其配置的初始化方法; 8)、如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessAfterInitialization(Object obj,String s)方法; 注:以上工作完成以后就可以应用这个Bean了,那这个Bean是一个Singleton的,所以一般情况下我们调用同一个id的Bean会是内容地址相同的实例。当然,在Spring配置文件中也可以配置非Singleton。 9)、当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用其实现的destory()方法; 10)、最后,如果这个Bean的Spring配置文件中配置了destory-method属性,会自动调用其配置的销毁方法。 ? 这Spring框架中,一旦把一个bean纳入到Spring IoC容器之中,这个bean的生命周期就会交由容器进行管理,一般担当管理者角色的是BeanFactory或ApplicationContext。认识一下Bean的生命周期活动,对更好的利用它有很大的帮助。 ???? 下面以BeanFactory为例,说明一个Bean的生命周期活动: Bean的建立 ??????由BeanFactory读取Bean定义文件,并生成各个实例。 Setter注入 ??????执行Bean的属性依赖注入。 BeanNameAware的setBeanName() ??????如果Bean类实现了org.springframework.beans.factory.BeanNameAware接口,则执行其setBeanName()方法。 BeanFactoryAware的setBeanFactory() ??????如果Bean类实现了org.springframework.beans.factory.BeanFactoryAware接口,则执行其setBeanFactory()方法。 BeanPostProcessors的processBeforeInitialization() ??????容器中如果有实现org.springframework.beans.factory.BeanPostProcessors接口的实例,则任何Bean在初始化之前都会执行这个实例的processBeforeInitialization()方法。 Initia

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档