Это прекрасно работает, но когда я вызываю один из методов в моем приложении, он создает несколько потоков и использует счетчик защелок, чтобы дождаться их завершения.
Вы можете обойти это, вызвав метод в отдельном потоке. Однако я подозреваю, что метод ожидает завершения всех потоков, потому что он хочет агрегировать некоторые результаты и затем возвращать агрегированный результат (или что-то подобное). Если это так, то есть несколько способов справиться с этим, но, вероятно, наиболее разумным для графического приложения является то, чтобы поток вызывал обратный вызов с любыми результатами, полученными с помощью метода.
Если вы разместите пример кода, мы можем предоставить вам более конкретные ответы и примеры того, как это сделать.
Обновление:
Мне трудно читать ваш код, но я предполагаю, что 'startParser' - это блокирующий вызов. Кроме того, похоже, что пользовательскому интерфейсу не нужно ждать результатов, поэтому я бы порекомендовал вам сделать самую простую вещь:
MyGoogleSearch startParsing = new MyGoogleSearch();
Thread t = new Thread(new Runnable(){
public void run(){
startParsing.startParser(othoSelection);
}
}
// don't wait for this thread to finish
t.start();