У меня есть один объект
public class MyObject{
private int id;
private String source;
private String entityId;
private string value;
//setter getter
}
// метод в обслуживании
public syncronized void processCalc(MyObject o){
//object processing code
}
здесь я использовал синхронизированный, поэтому всякий раз, когда какой-то внешний поток будет вызывать, они будут ждать, если метод используется1 поток
Теперь мне нужно изменить его, чтобы иметь некоторые условия.Тот же самый метод должен использоваться для синхронизации и асинхронности на основе некоторого условия
, если объект с source = ABC и entityId = 123 уже обрабатывает, и приходящий поток имеет Object с source = ABC и entityId = 333, тогда это должно позволитьбез ожидания.Если тот же объект с source = ABC и entityId = 123 поступает из diff thread, то он должен перейти в состояние Ожидание, пока первый не завершит процесс.
Поэтому мне нужно, чтобы тот же метод должен был синхронизироваться только тогда, когда онвстретить некоторые условия.
1) if Coming Object is same as object already processing, then it should wait
2) If coming object is diff than already processing object then it should allow to proccess at the same time, no need to wait
3) same object I mean entityid and source is same
ПРИМЕЧАНИЕ. Здесь значение может быть разным, поэтому нам необходимо реализовать такую логику