java如何实现调用方法超时处理
说明:
项目中有时候会遇到调用方法的时候出现超时情况,这个时候就需要进行一些处理.
目前考虑两种方法可以实现,一种是使用自定义注解,一种是使用线程池创建线程异步处理
一. 自定义注解实现
1.首先自定义一个方法超时注解
import java.lang.annotation.*;
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Timeout {
long value() default 1000;
}
2.定义一个切面类,用来实现自定义注解用来干什么的
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
@Aspect
@Slf4j
@Component
public class TimeoutAspect