Spring问题汇总-02线程安全

2020-12-19  本文已影响0人  惊天动地猪儿虫

1 Springboot与线程安全

1.1 MVC

毫无疑问,Controller默认是单例的,在多线程情况下,如果Controller是有状态的,则会导致线程安全问题,可以通过设置scope或将实例变量改为Treadlocal处理。

1.2 Async

在异步任务中使用Context获取单例Service

    @Scheduled(cron = "0/5 * * * * ?")
    @Async
    public void identifyAnnouncement() {
        SingltonService singltonService = ApplicationContext.getSingltonService ();
        singltonService .doWork();
    }

按理说,这个SingltonService如果也是有状态的,也会导致线程安全。
但是在模拟测试中,并未发现问题并且打印singltonService确认是单例无疑。

上一篇 下一篇

猜你喜欢

热点阅读