说出来你们可能不相信,上期预告的《ssl?tsl?有关于网络安全》被我不小心暂时咕掉了(什么叫咕掉了,读书人的咕能叫咕么!下期,下期我一定把这个坑填上,我发四)。原因呢很复杂,主要是我有一个大胆的想法,想赶紧写下来。首先呢,这是一篇随笔,里面讨论的东西只是突然的一个不太成熟的想法。欢迎大家来指正。
先说说背景,最近偶然间随手用koa写了几个小东西(这玩意真的很好用啊),被里面的await,async强势吸了一波粉。刚好也在整理以前写的java代码,发现很多接口都是在同步处理的过程中做了很多乱七八糟的事情,使得性能变得很低。而对这些东西做优化又会修改到原先的代码,从而产生问题。于是突发奇想能不能在java里也实现这么一个东西,只需要声明一下就能将方法从同步切成异步而不侵入原先的代码。
实现方式
我初步想到的方式是通过aop+注解的方式去实现。先定义一个注解,通过注解切点的方式去编织一个切面,在这个切面中使用将调用的方法放到一个线程池里去执行。
/**
* 创建一个注解类
*/
package com.async.service.annotation;
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Async {
}
/**
* 根据注解切点编制切面
*/
@Aspect
@Co