public void start(Callback caller) {
        this.caller=caller;
        timerActive=true;
        new Thread() {
            public void run() {
                while(timerActive) {
                    if (currentTimeInterval/1000000>=timeInterval) {
                        //tick here
                        makeTick();
                    } else {
                        try {
                            timeBeforeSleep=System.nanoTime();
                            Thread.sleep(0,999999);
                            currentTimeInterval+=(System.nanoTime()-timeBeforeSleep);
                        } catch (Exception ex) {}
                    }
                    
                }
            }
        }.start();

    }