Запуск пользовательского метода в качестве потока - PullRequest
0 голосов
/ 15 июня 2011

В Java для запуска отдельного потока мы должны реализовать интерфейс Runnable или расширить класс Thread, поэтому для запуска нового потока можно использовать только метод Run ().

В C # мы можем вызвать любой метод для запуска в качестве нового потока, используя новая тема (целевая функция);

поэтому в Java мы в конечном итоге создаем отдельный класс для функции, которая может выполняться как поток. Так есть ли способ избежать этого?

Я хочу избежать каких-либо изменений в архитектуре, и сам метод не очень длинный, это всего лишь два цикла, которые отнимают много времени.

Ответы [ 4 ]

3 голосов
/ 15 июня 2011

Хотя и не идеально, вы можете использовать анонимный внутренний класс, чтобы обернуть вашу функцию. Код для выполнения вашей функции в отдельном потоке будет выглядеть примерно так:

Thread t = new Thread () {
     public void run()
     {
        myMethodHere();
     }

};

t.start();
2 голосов
/ 15 июня 2011

В java функция (или даже лучший метод) не является самим объектом, и поэтому вам придется создавать такую ​​оболочку для выполнения того, что вы хотите.

new Thread() {
    public void run() {
        originalMethod();
    }
}.start();
1 голос
/ 15 июня 2011

Вы можете создать вспомогательный метод, который использует отражение для реализации

backgroundMethod("methodName");

или

backgroundMethod(object, "methodName");

Если это не то, чем вы часто занимаетесь, использование Runnable, предложенного другими, может быть лучше / понятнее.

1 голос
/ 15 июня 2011

Насколько я знаю, Java: единственный способ запустить поток - это вызвать run () любым из предоставленных способов, таких как те, которые вы назвали.

Однако вы можете просто вызвать вызов вашего метода во время выполнения. Тогда вы не сильно измените свою архитектуру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...