Can I make a Java HttpServer threaded/process requests in parallel?

You used server.setExecutor(null) that runs the handler in the same caller thread. In this case, the main thread which runs the server.

You only need to change the line as

public static void main(String[] args) throws Exception {

    HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
    //Create the context for the server.
    server.createContext("/", new BaseHandler());
    server.setExecutor(Executors.newCachedThreadPool());
    server.start();
}

As you can see in ServerImpl, the default executor just "run" the task :

  157       private static class DefaultExecutor implements Executor {
  158           public void execute (Runnable task) {
  159               task.run();
  160           }
  161       }

you must provide a real executor for your httpServer, like that :

server.setExecutor(java.util.concurrent.Executors.newCachedThreadPool());

and your server will run in parallel. Carefull, this is a non-limited Executor, see Executors.newFixedThreadPool to limit the number of Thread.