Java-вопрос (о действии)

#java

#java

Вопрос:

Я изучаю Java и увидел вопрос, который я не знаю, как решить — вопрос заключается в следующем: «напишите функцию, которая получает действие, когда первый поток входит в функцию — она активирует действие, а затем возвращает true и завершает работу. все другие потоки, которые вводят функцию, будут ждать, пока первый поток завершит свое действие, а затем они ничего не будут делать и вернут false; ‘

Я пишу это до сих пор (с помощью пользователей stackoverflow), но я понятия не имею, что это за действие и как его активировать:

 public boolean doAction(Action doThis)
{
        synchronized (Ex1.lockit) // synchronize on the flag so that other threads arriving here, will be forced to wait
        { 
            if(!flag) // This condition is true only for the first thread.
            {
               flag = true; //set the flag so that other threads will not invoke doX.
         //      here I need to activate the action somehow;           
               return true;
            }
        }
        return false;    
}
  

Комментарии:

1. Чего они хотят, так это чтобы вы выполнили действие один и только один раз, первый поток выполняет действие и возвращает true, другой поток ожидает его завершения и возвращает false; Вы можете использовать Runnable для передачи действия.

2. Где размещен первоначальный вопрос? Не могли бы вы, пожалуйста, воспроизвести его здесь полностью? На данный момент меня смущает вопрос, требующий семантики execute-only-once или execute-only-when-first-method-is-successful из ответа.

3. Звучит как попытка создать функциональность, аналогичную функциональности EventQueue, но для действий вместо Runnables. Звучит ли это примерно так?

4. вопрос не на английском, поэтому я не могу его опубликовать..

5. Вопрос для меня тоже не так ясен, я хотя, возможно, есть способ активировать «Действие» (а не другие типы), но, по-видимому, такого способа нет .. но все же — спасибо