Tu problema es que no es sleep quien debe ir en segundo plano, sino la llamada al proceso java.
Por aquí te explican varias soluciones:
http://stackoverflow.com/questions/6...ecessary-delay
1. Ejecutar en una subshell en segundo plano, y matar el proceso luego de cierto tiempo:
( /path/to/slow command with options ) & sleep 5 ; kill $!
2. Una función que hace lo que necesitas, en bash4:
http://www.bashcookbook.com/bashinfo...ripts/timeout3
3. la utilidad timeout, del paquete coreutils.