Никто не ответил на него напрямую, так что вот ближайшая вещь, которую я могу дать вам в коротком количестве кода psuedo:
обернуть метод в runnable / callable. Сам метод должен будет проверить прерванный статус, если вы хотите его остановить (например, если этот метод является циклом, внутри проверки цикла для Thread.currentThread () isInterrupted, и если это так, остановите цикл (дон Однако не проверяйте каждую итерацию, или вы просто замедляете работу. В методе обтекания используйте thread.join (timeout), чтобы подождать время, в течение которого вы хотите запустить этот метод, или внутри цикла туда соедините соединение несколько раз с меньшим таймаутом, если вам нужно делать другие вещи во время ожидания. Если метод не завершит, после присоединения, используйте приведенные выше рекомендации для прерывания быстрой / чистой.
, поэтому код мудрый, старый код:
void myMethod()
{
methodTakingAllTheTime();
}
новый код:
void myMethod()
{
Thread t = new Thread(new Runnable()
{
public void run()
{
methodTakingAllTheTime(); // modify the internals of this method to check for interruption
}
});
t.join(5000); // 5 seconds
t.interrupt();
}
, но опять же, для того, чтобы это работало хорошо, вам все равно придется изменять методTakeAllTheTime или этот поток будет продолжать работать после вас 'вызвано прерыванием.
вы можете использовать xpath для нахождения элементов вместо cssSelector, если вы используете chrome, тогда в расширениях вы можете добавить chroPath для поиска xpath, а если вы используете mozilla firefor, то вы должны использовать firebug для поиска xpath для элементов, и когда вы используете щелкните правой кнопкой мыши на своей странице, чтобы проверить, в каких элементах вы можете найти chroPath с правой стороны.