美文网首页
切面关于线程安全的一个例子

切面关于线程安全的一个例子

作者: 抬头挺胸才算活着 | 来源:发表于2020-06-02 15:29 被阅读0次

    切面如果没有设置Scope的话,默认都是单例的,会被多个线程使用,定义了局部变量start,切面是有状态的,所以是线程不安全的。
    可以改为环绕通知,然后将start定义为局部变量。

    @Aspect
    @Component
    public class MyAspect {
    // 是否安全?
    private long start = 0L;
    @Before("execution(* *(..))")
    public void before() {
    start = System.nanoTime();
    }
    @After("execution(* *(..))")
    public void after() {
    long end = System.nanoTime();
    System.out.println("cost time:" + (end-start));
    }
    }
    

    相关文章

      网友评论

          本文标题:切面关于线程安全的一个例子

          本文链接:https://www.haomeiwen.com/subject/fciuzhtx.html