Omitir la función si lleva demasiado tiempo.

En Java tengo una función que procesa un archivo de texto de cierta manera. Sin embargo, si toma demasiado tiempo, el proceso probablemente será inútil (sea cual sea el motivo) para ese archivo de texto y me gustaría omitirlo. Además, si el proceso toma demasiado tiempo, también usa demasiada memoria. He intentado resolverlo de esta manera, pero no funciona:

for (int i = 0; i<docs.size(); i++){
    try{
        docs.get(i).getAnaphora();
        }
    catch (Exception e){
        System.err.println(e);
    }
 }

dóndedocs es solo unList de archivos en un directorio. Por lo general, tengo que detener manualmente el código porque está "atascado" en un archivo en particular (dependiendo del contenido de ese archivo).

¿Hay una manera de medir el tiempo para esa llamada de función y decirle a Java que omita el archivo que la función toma más de, digamos, 10 segundos?

EDITAR
Después de recopilar algunas respuestas diferentes, se me ocurrió esta solución que funciona bien. Quizás alguien más pueda usar la idea también.

Primero cree una clase que implemente Ejecutable (de esta manera puede pasar argumentos al Thread si es necesario):

public class CustomRunnable implements Runnable {

    Object argument;

    public CustomRunnable (Object argument){
        this.argument = argument;
}

    @Override
    public void run() {
        argument.doFunction();
    }
}

Luego use este código en lamain clase para controlar el tiempo de una función (argument.doFunction()) y salir si se tarda demasiado:

Thread thread;
for (int i = 0; i<someObjectList.size(); i++){          
    thread = new Thread(new CustomRunnable(someObjectList.get(i)));
    thread.start();
    long endTimeMillis = System.currentTimeMillis() + 20000;
    while (thread.isAlive()) {
        if (System.currentTimeMillis() > endTimeMillis) {
        thread.stop();
        break;
    }
    try {
        System.out.println("\ttimer:"+(int)(endTimeMillis - System.currentTimeMillis())/1000+"s");
        thread.sleep(2000);
        }
    catch (InterruptedException t) {}
    }
}

me doy cuentastop() está obsoleto, pero no he encontrado ninguna otra forma de detener y salir del hilo cuando quiero que se detenga.

Respuestas a la pregunta(2)

Su respuesta a la pregunta