Көктем @Aynync және синхрондалған

Мен көктемде негізделген асинхронды әдіс бар (түсініктеме @Async ), қате туралы оқиға бірнеше рет орындалған жағдайда кідіртуді қалаймын. Бірдей нәрсені істейтін бірден көп болуы мүмкін болғандықтан, мен барлық ағындар санау туралы хабардар болуы үшін және AtomicInteger ( MY_COUNT AtomicInteger кірістірілген сәйкестігін пайдалануға мүмкіндік береді.

Менің бірлік тестілеуімде (Eclipse ішіндегі SpringJUnit4ClassRunner арқылы жүгіріңіз), барлығы MY_COUNT.incrementAndGet() соққыныңызға дейін бәрі жақсы. Содан кейін жіп жойылады. Жоқ, ештеңе жоқ. Async жұмысшы жіпі мүлдем жойылады. Мен AtomicInteger -ді шығарып көріп, synchronized әдістерін қолданып көрдім, бірақ сол нәрсе болады.

Сұрақ: @Async және синхрондау арасындағы өзара әрекеттестіктің қандай да бір түрі бар ма? Бұл екеуін біріктіру мүмкін емес пе?


EDIT: көбірек ақпарат: синхрондау кеңістігімен байланысты нәрсе бар (бұл дұрыс термин болса). Мен контроллерден static белгісін алып тастағаннан кейін, ол әлі бомбаданады; бірақ содан кейін оны Integer түрлендіргенде және инкремент кодын өзіңіздің синхрондалған әдісіңізге жылжытсаңыз, онда код жалғасады. Мен көктемгі Көктем кодын бұзбадым; Бұл мінез-құлықты түсінуге қабілетті көктемгі сарапшылар бар ма?

6
@AaronSheffey: Маңызды бөлшектер үшін кодтық үзінділерді бере аласыз ба? static түрлендіргіші айнымалы мәнге сай келеді, әйтпесе, әрбір ағымның өз мониторы бар. Сондай-ақ, @Async -мен сипатталған әдіске сәйкес орындалатын кезде стакстраяға қарап қызықты.
қосылды автор dma_k, көзі
Ең алдымен, ерекше жағдай жұтылуда - консольде тіркелмеген болуы мүмкін, мүмкін, сіздің журнал жүргізу конфигурацияңыз. Проблемалы код айналасында тырысып көріңіз
қосылды автор gkamal, көзі

1 жауаптар

Жоқ, асинх атомдық бүтіндік әрекетіне әсер етпеуі керек.

Берілген ақпарат бойынша, тек логикалық тұжырым жасалады, ол туралы ақпарат алынбайды.

егер сіз үшін мүмкін болса, жоққа шығарылған ерекше баптаушы параметрін орнатып көріңіз

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

Ұстағышта ең кем дегенде басып шығарылған жолды іздеңіз.

Егер бұл сізге шешім бермесе немесе сізде қиындықсыз ерекшелік өңдегішті орнатуда қиындық туындаса, сізге өзіңіздің кодты жіберіп, сізге көмектесе аламыз.

4
қосылды