#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. Вопрос для меня тоже не так ясен, я хотя, возможно, есть способ активировать «Действие» (а не другие типы), но, по-видимому, такого способа нет .. но все же — спасибо