Size: a a a

2020 March 16

d

dima in learn.java
решение получше

private final Object lock = new Object();
источник

d

dima in learn.java
совсем хорошо - локи из juc
источник

A

Andrey in learn.java
dima
ну у тебя в два метода разных спринговых сервисов вызываются в каком-то другом методе, так?
их кто угодно может вызывать
источник

d

dima in learn.java
Andrey
их кто угодно может вызывать
но тебе нужно упорядочить их вызов друг за другом и атомарно?
источник

I

Igor in learn.java
dima
решение получше

private final Object lock = new Object();
на Integer главное не лочиться :)
источник

A

Andrey in learn.java
dima
но тебе нужно упорядочить их вызов друг за другом и атомарно?
у меня есть некий ресурс который я не контролирую и к нему я обращаюсь из разных 2х сервисов, эти два сервиса потом исползуются из 1000 разным мест. И вот я хочу чтобы доступ к этому рерурсу был сихронизирован, сделать из двух сервисов один не подходит тк они несмотря что ресурс один очен разные.
источник

d

dima in learn.java
эм, как насчет того, чтобы синхронизировать сам ресурс?
источник

d

dima in learn.java
у тебя разделяемое состояние - для него все приемы одинаковы будут, что я выше описал
источник

A

Andrey in learn.java
этот ресурс какой-то внешний сервер
источник

A

Andrey in learn.java
я же написал не  могу сделать из двух сервисов один
источник

A

Andrey in learn.java
а если сделать статичный объект в одном из классов и на него синхронизироваться? а так можно?
источник

d

dima in learn.java
ты не понял, что я тебе написал
источник

d

dima in learn.java
у тебя ресурс какой-то внешний сервер - это что? хттп клиент? какой-то кэш?
источник

d

dima in learn.java
если хттп клиент - можешь синхронизировать доступ к нему
источник

d

dima in learn.java
если кэш - у тебя полно коллекций синхронизированных
источник

A

Andrey in learn.java
не могу я его синхронизировать
источник

A

Andrey in learn.java
очень долго объяснять почему, мне надо решить проблему сихронизации двух методов разных классов
источник

DS

Dmitriy Shilnikov in learn.java
Можно всю логику непосредственного доступа к сервису в отдельный класс вынести, чтобы те два сервиса не напрямую юзали его, а через эту прокладку. И там уже синхронизировать что угодно.
источник

A

Andrey in learn.java
писал выше что так тоже не могу
источник

A

Andrey in learn.java
долго выносить
источник