Spring   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了java – Spring @Async和Synchronized大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个基于Spring异步方法(用@Async注释),我想在错误事件发生一定次数的情况下暂停.由于可能有多个线程在做同样的事情,我尝试了一个静态的AtomicInteger(MY_COUNT),以便所有线程都可以知道计数,并利用AtomicInteger提供的内置并发性.

在我的单元测试中(在Eclipse中使用SpringJUnit4ClassRunner运行),一切都很顺利,直到线程命中MY_COUNT.incrementAndGet().然后线程就消失了.没有例外,没有.异步工作线程就消失了.我尝试取出AtomicInteger并使用同步方法,但同样的事情发生了.

问题:@Async和同步之间是否存在某种引擎内交互?是不是可以将两者结合起来?

编辑:更多信息:它似乎与同步范围有关(如果这是正确的术语).一旦我从计数器变量中删除了静态名称,它仍然被轰炸;但是当我将其更改为Integer并将增量代码移动到其自己的synchronized方法时,代码继续进行.我没有调试底层的Spring代码;是否有任何Spring专家可能能够阐明这种行为?

最佳答案
不,异步不应该影响原子整数的行为.

根据给定的信息,唯一合乎逻辑的结论是存在一些未被报告的异常.

如果可以,请尝试设置Uncaught异常处理程序

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.UncaughtExceptionHandler.html

在处理程序中,确保至少打印出跟踪.

如果这不能为您提供解决方案,或者您在设置未捕获的异常处理程序时遇到问题,请发布您的代码,以便我们为您提供帮助.

大佬总结

以上是大佬教程为你收集整理的java – Spring @Async和Synchronized全部内容,希望文章能够帮你解决java – Spring @Async和Synchronized所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。