kir*_*ran 1 spring multithreading mail-sender
我正在使用Spring的JavaMailSenderImpl在我的Web应用程序中发送电子邮件.我只创建了一个这样的实例(实际上它是由另一个使用spring bean创建并且是单例的对象使用的).
所以问题是,JavaMailSenderImpl是否是线程安全的?在我的应用程序中,当多个线程同时使用mailSender时,它会导致任何竞争条件吗?
是的,一旦构造JavaMailSenderImpl就是线程安全的.
看一下doSend做实际工作的方法.它只包含方法局部变量(因此每个调用线程/堆栈都有自己的实例).(这同样适用于send添加某些功能的方法).
类似的方法getSession是synchronized如此只有一个线程可以访问该方法.
使线程安全的最大的事情是(几乎)没有可变共享状态和存在的单个可变共享状态(Session)synchronized.
接下来,它以单一方式在生产系统中使用它超过12年,并且从未遇到任何并发问题.是的,我们在高度并发的应用程序中使用它.(它也是Spring Batch和Spring Integration等其他框架组件使用JavaMailSenderAPI的方式).
| 归档时间: |
|
| 查看次数: |
1599 次 |
| 最近记录: |