Возможно, это не сработает (см. комментарии) - оставив его для информации.
Один из способов - использовать Семафоры :
sem1
с одним разрешением, связанным с методом 1 sem2
с одним разрешением, связанным с методом2 при вводе method1, попробуйте получить разрешение sem2 и, если доступно, немедленно отпустите его.
См. этот пост для примера реализации.
Примечание: в вашем коде, даже если ConcurrentMap является потокобезопасным, операция 1 и операция 2 (например) не являются атомарными, поэтому в вашем сценарии возможно следующее чередование: