Java program performance problem optimization