public static void main(String[] args) {

        description = "Description: " + "Testing some crazy hardcore!!!!!" +
                "Testing overprocessing by Bank. " +
                "Works until requests == 0.";

        System.out.println("Main thread started");

        String hours = new SimpleDateFormat("HH").format(Calendar.getInstance().getTime());
        String minutes = new SimpleDateFormat("mm").format(Calendar.getInstance().getTime());
        String seconds = new SimpleDateFormat("ss").format(Calendar.getInstance().getTime());
        startTimeLog = hours + "_" + minutes + "_" + seconds;

        log = new Log(startTimeLog + "_" + className);

        bank = new Bank(0);
        userHandler = new UserHandler(bank);

        log.start();
        bank.start();
        userHandler.start();



        log("Running time", timeRunning);

        log(description);

        // The system will run for 'timeRunning' millis
        System.out.println("Left: " + (timeRunning) + " millis");
        try {
            Thread.sleep((int) timeRunning / 4);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        try {
            Thread.sleep((int) timeRunning / 4);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Left: " + (timeRunning - (timeRunning/4)) + " millis");
        try {
            Thread.sleep((int) timeRunning / 4);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Left: " + (timeRunning - (timeRunning/2)) + " millis");
        try {
            Thread.sleep((int) timeRunning / 4);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Left: " + (timeRunning - (timeRunning/4*3)) + " millis");
        try {
            Thread.sleep((int) timeRunning / 4);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        userHandler.terminate();
        bank.terminate();

        while (((bankAnalytics == null) || (uhAnalytics == null))) {
            // Wait for them to terminate
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        analise();

        /*
        String s = "Bank unprocessed: " + bankAnalytics.getUnprocessedOperations();
        String s1 = "UserHandler performed: " + uhAnalytics.getPerformedOperations();
        String s2 = "Bank performed: " + bankAnalytics.getPerformedOperations();
        long r = uhAnalytics.getPerformedOperations() - bankAnalytics.getPerformedOperations() -
                bankAnalytics.getUnprocessedOperations();
        //log.nextLine();
        log("Analytics:");
        log(s);
        log(s1);
        log(s2);
        log("Should be zero: ", r);
        //log.nextLine();
        */

        log.terminate();

        System.out.println("Main thread terminated");
    }