If you fail to consume the stdout/stderr of the child process, it will hang if it produces enough output to fill up a buffer.  See http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html

I haven't tested it, but I think this will work (NB: I'm assuming command hooks don't need stdin):

                ProcessBuilder builder = new ProcessBuilder(command);
                builder.redirectErrorStream(true);
                Process proc = builder.start();
                BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
                String line;
                while ((line = reader.readLine()) != null) {
                    System.out.println (line);
                }

If we were targeting Java 7, I think we could just use this:

                ProcessBuilder builder = new ProcessBuilder(command);
                builder.redirectError(Redirect.INHERIT);
                builder.redirectOutput(Redirect.INHERIT);
                builder.redirectInput(Redirect.INHERIT);
                Process proc = builder.start();
                proc.waitFor();