一般有四种方法,Thread,Runnable,Callable,使用Executor框架来创建线程池。
Runnable和Callable的区别是,
(1)Callable规定的方法是call(),Runnable规定的方法是run().
(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得
(3)call方法可以抛出异常,run方法不可以
(4)运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。
4.@Autowired和@Resources的区别:
@Autowired默认按照类型进行注入,如果需要使用名称来进行查找,则需要配合使用@Qualifier(name="被代理类对象 ")使用
@Resources默认使用名称进行注入,名称找不到会按照类型进行注入,如果使用了名称则按照名称注入
5.AcriveMq是什么?为什么要是用AcriveMq?
概述:ActiveMq是基于java中的JMS消息服务规范实现的一个消息中间件
ActiveMq的优势:
(1)解耦合:上层发送方不用去关心下层服务调用方的问题
(2)异步调用:各个微服务之间所需要的时间(即时效性要求不同),使用Mq的异步调用合理处理
(3)流量削峰:大型数据访问的时候,使用消息中间件,超出消息中间件排队等候,减小服务器压力
AcriveMq消息发送方式和区别:
(1)点对点模式(Queue):每个消息只有一个消费者,消息保证送达,离线消费者可以在下次上线后收到之前积压的消息
(2)订阅模式(Topic):
普通订阅:不区分消费者,当前有几个客户端在线,就发送几条广播给客户端。
持久化订阅: 区分消费者,消费者在线则直接发送消息广播给消费者,消费者离线,只要该消费者有topic 登记,就会为其保留消息直至其再次连接后一次性推送,消息可以积压。
6.Spring如何管理事务:
- 编程式事务管理: 直接使用PlatformTransactionManager实现或使用TransactionTemplate模板类
- 声明式事务管理: 这意味着你的业务代码将于事务管理分开,只用注解或基于XML配置来管理事务
-
我们项目中使用的是声明式事务管理,它通过注解@Transcation 将事务管理代码从业
务方法中分离出来,以声明的方式来实现事务管理。事务管理作为一种横切关注点,可
以通过 AOP 方法模块化。Spring 通过 Spring AOP 框架支持声明式事务管理
7.为什么使用redis?
(1)读写性能高:每秒读写10万数据量
(2)丰富的数据类型:包含5种数据类型:String,list,hash,set,zest
(3)原子性:redis存储数据要么全部成功,要么全部失败回滚
(4)丰富的特性:redis还包含publish/subscribe(发布/订阅),通知,key过期处理等。