Fork Join
Fork Join
Fork Join
Fork Join
• java.util.concurrent
RecursiveTask<T>
• Tarea que va a ser ejecutada
• Se sobreescribe el método compute()
• Este método devuelve un valor de tipo <T>
• compute() es responsable de:
• Si la tarea es manejable (suficientemente pequeña) hace el
cálculo y devuelve el resultado
• Si la tarea es muy grande la divide
• Crea una o varias nuevas tareas y las arranca con fork()
• Recupera los resultados parciales de las subtareas con join()
• jojn() bloquea hasta que el resultado esté listo
• Une el resultado de todas las subtareas y lo devuelve
Práctica
• Cree un programa que mediante ForkJoin calcule el
tamaño total en bytes de un directorio/archivo
dado.
• Si se recibe un archivo se calcula y devuelve el
tamaño
• Si se recibe un directorio, se crea una subtarea por
cada directorio/archivo interno
• Se calcula el tamaño total y se devuelve