I am looking for a way to interrupt a loop in Java without multithreading.
public class Foo{
    public Foo(){
    }
    public void bar(long timeLimit)  {
       long endTime = System.currentTimeMillis() + (timeLimit * 1000);
       while (System.currentTimeMillis() < endTime) {
           // Some really long and complicated computation
        }
     }        
 }
At the moment I realized that which various (System.currentTimeMillis() < timeLimit) calls to check during the computation if there is time left but I guess that eats up some time and I am also facing the problem that if a loop starts in time, the computation might not be done in time. 
Amending the timeLimit (let's say only using 40 % of the time) accordingly also does not work, because I cannot predict how long some computations take.
Which options are there?