Java: есть ли способ вызвать метод, когда исходный метод завершается?

Вот моя проблема: мне нужно завершить вызывающий метод (иначе мой пользовательский интерфейс не будет обновляться), пока вызываемый метод все еще работает. Атм примерно так:



    public InGameGUI() {
        ...
        switchToRoboControl();
    }

и переключатель ToRoboControl должен выполнять решение в пользовательском интерфейсе. Я думал об использовании собственного Listener-thingee, но 1. Я понятия не имею, как это сделать правильно, и 2. Мне было интересно, есть ли лучшие способы. Потоки также не совсем подходят, поскольку есть несколько методов, которые мне нужно вызывать таким образом...


person Saftkeks    schedule 19.07.2014    source источник
comment
Посмотри на тебя другой вопрос   -  person Mirco    schedule 19.07.2014
comment
возможный дубликат Синхронизация интерфейса и сервера в Java (и SWT)   -  person Mirco    schedule 19.07.2014


Ответы (2)


Я бы использовал Threads, это именно тот случай, когда их следует использовать.

Потоки также не совсем подходят, поскольку есть несколько методов, которые мне нужно вызывать таким образом...

И что мешает вам начать и управлять большим количеством Threads и, возможно, сгруппировать некоторые задачи вместе?

Кроме того, если у вас аллергия на множество потоков, вы можете определить событие сердцебиения (один отдельный поток, который периодически активен (например, запускает один экземпляр каждую секунду)), который всегда будет проверять и запускать задачи, которые должны быть запущены, и вы можете запланировать задачи в основной теме.

person Lajos Arpad    schedule 19.07.2014
comment
Использование нитей, несмотря на мою аллергию на нити, помогло, спасибо! Было больно, но теперь это работает. :-) - person Saftkeks; 20.07.2014

Вы можете ознакомиться с платформой АОП, предоставляемой Spring. . Существуют различные вызовы, которые вы можете сделать, например, выполнить какой-либо совет до или после точки соединения.

Вы хотите, чтобы метод или процедура выполнялись только при завершении вашего метода. Spring AOP предоставляет гораздо больше возможностей. Вы можете запускать методы перед выполнением, после возврата метода, после того, как метод выдает исключение или во всех трех точках.

Вы можете написать свой собственный класс, который implements AfterReturningAdvice и переопределит метод afterReturning(). В вашем файле конфигурации spring создайте прокси-компонент для вашего класса, который имеет метод public InGameGUI(). В этом bean-компоненте вам необходимо предоставить ссылку на фактический объект класса и ваш bean-компонент, который ссылается на класс, реализующий AfterReturningAdvice в качестве имени перехватчика.

person Aniket Thakur    schedule 19.07.2014
comment
Это не настоящий ответ, скорее комментарий. - person Mirco; 19.07.2014
comment
OP запросил способ вызова метода при завершении какого-либо метода, о чем я уже упоминал. Я не понимаю, как это квалифицируется как комментарий больше, чем ответ. - person Aniket Thakur; 19.07.2014
comment
Это указывает пользователю на источник информации, а не помогает ему с его конкретной проблемой. Хотя бы пример или какое-то пояснение, как это ему поможет - person Dioxin; 19.07.2014
comment
Что сказал Винс, и: у ОП есть еще один открытый вопрос, в котором он просит ответить на очень похожую (я бы сказал ту же) проблему. - person Mirco; 19.07.2014