Ошибка открытия Sqlite «Невозможно открыть базу данных»

Возможно, это не сработает (см. комментарии) - оставив его для информации.


Один из способов - использовать Семафоры :

  • один семафор sem1 с одним разрешением, связанным с методом 1
  • одним семафором sem2 с одним разрешением, связанным с методом2

при вводе method1, попробуйте получить разрешение sem2 и, если доступно, немедленно отпустите его.

См. этот пост для примера реализации.

Примечание: в вашем коде, даже если ConcurrentMap является потокобезопасным, операция 1 и операция 2 (например) не являются атомарными, поэтому в вашем сценарии возможно следующее чередование:

  • Thread 1 запускает операцию 1
  • Резьба 2 работает 1
  • Резьба 2 работает 2
  • Резьба 1 запускает операцию 2

1
задан halfer 29 May 2019 в 21:15
поделиться