Add information about Java profiling. Use ExecutorService instead of manually creating threads. Update documentation.