增加新项时,如果队列满了,add会抛出异常,offer返回false。
2、poll()和remove()区别:
poll()和remove()都是从队列中删除第一个元素,remove抛出异常,poll返回null。
3、peek()和element()区别:
peek()和element()用于查询队列头部元素,为空时element抛出异常,peek返回null。
-
synchronized
-
volatile
-
ReenreantLock
-
使用局部变量实现线程同步
三、你了解过哪些同步器?请分别介绍下。
1、Semaphore同步器
特征:
-
经典的信号量,通过计数器控制对共享资源的访问
-
Semaphore(int count):创建拥有count个许可证的信号量
-
acquire()/acquire(int num) : 获取1/num个许可证
-
release/release(int num) : 释放1/num个许可证
2、CountDownLatch同步器
特征:
-
必须发生指定数量的事件后才可以继续运行(比如赛跑比赛,裁判喊出3,2,1之后大家才同时跑)
-
CountDownLatch(int count):必须发生count个数量才可以打开锁存器
-
await:等待锁存器
-
countDown:触发事件
3、CyclicBarrier同步器
特征:
-
适用于只有多个线程都到达预定点时才可以继续执行(比如斗地主,需要等齐三个人才开始)
-
CyclicBarrier(int num) :等待线程的数量
-
CyclicBarrier(int num, Runnable action) :等待线程的数量以及所有线程到达后的 *** 作
-
await() : 到达临界点后暂停线程
4、交换器(Exchanger)同步器
5、Phaser同步器
https://www.cnblogs.com/pamne/p/11731797.html
2020-9-24 08:25-09:00
四、如果客户端禁止 cookie 能实现 session 还能用吗?
一般默认情况下,在会话中,服务器存储 session 的 sessionid 是通过 cookie 存到浏览器里。
如果浏览器禁用了 cookie,浏览器请求服务器无法携带 sessionid,服务器无法识别请求中的用户身份,session失效。
但是可以通过其他方法在禁用 cookie 的情况下,可以继续使用session。
-
通过url重写,把 sessionid 作为参数追加的原 url 中,后续的浏览器与服务器交互中携带 sessionid 参数。
-
服务器的返回数据中包含 sessionid,浏览器发送请求时,携带 sessionid 参数。
-
通过 Http 协议其他 header 字段,服务器每次返回时设置该 header 字段信息,浏览器中 js 读取该 hea
【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】 浏览器打开:qq.cn.hn/FTf 免费领取
der 字段,请求服务器时,js设置携带该 header 字段。
五、OSI 的七层模型都有哪些?
六、在 Java 中,为什么不允许从静态方法中访问非静态变量?
-
静态变量属于类本身,在类加载的时候就会分配内存,可以通过类名直接访问;
-
非静态变量属于类的对象,只有在类的对象产生时,才会分配内存,通过类的实例去访问;
-
静态方法也属于类本身,但是此时没有类的实例,内存中没有非静态变量,所以无法调用。
七、请解释 Spring Bean 的自动装配?
Spring支持IOC,自动装配不用类实例化,直接从bean容器中取。
1、配置在xml中
2、@Autowired自动装配
八、请解释自动装配模式的区别?
有五种自动装配的方式,可以用来指导 Spring 容器用自动装配方式来进行依赖注入。
1、no
默认的方式是不进行自动装配,通过显式设置 ref 属性来进行装配。第 402 页 共 485 页
2、byName
通过参数名 自动装配,Spring 容器在配置文件中发现 bean
的 autowire 属性被设置成 byname,之后容器试图匹配、装配和该 bean 的属
性具有相同名字的 bean。
3、byType:
通过参数类型自动装配,Spring 容器在配置文件中发现 bean
的 autowire 属性被设置成 byType,之后容器试图匹配、装配和该 bean 的属
性具有相同类型的 bean。如果有多个 bean 符合条件,则抛出错误。
4、constructor
这个方式类似于 byType, 但是要提供给构造器参数,如
果没有确定的带参数的构造器参数类型,将会抛出异常。
5、autodetect
首先尝试使用 constructor 来自动装配,如果无法工作,
则使用 byType 方式。
2020-9-25 08:30-09:00
九、如何开启基于注解的自动装配?
要使用 @Autowired,需要注册 AutowiredAnnotationBeanPostProcessor,可以有以下两种方式来实现:
引入配置文件中的
在bean配置文件中直接引入AutowiredAnnotationBeanPostProcessor
十、什么是 Spring Batch?
1、什么是spring batch?
spring batch是一个轻量级的、完善的批处理框架,它主要的目的在于帮助企业建立健壮、高效的批处理应用。
spring batch是Spring的一个子项目,它使用java语言并基于spring框架作为基础开发,使得已经使用Spring框架的开发者或者是企业可以更加容易访问和利用企业服务。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)