Mega Code Archive

 
Categories / Java / Threads
 

Thread Interrupt when calculating Pi

public class PiInterrupt extends Object implements Runnable {   private double latestPiEstimate;   public void run() {     try {       System.out.println("for comparison, Math.PI=" + Math.PI);       calcPi(0.000000001);       System.out           .println("within accuracy, latest pi=" + latestPiEstimate);     } catch (InterruptedException x) {       System.out.println("INTERRUPTED!! latest pi=" + latestPiEstimate);     }   }   private void calcPi(double accuracy) throws InterruptedException {     latestPiEstimate = 0.0;     long iteration = 0;     int sign = -1;     while (Math.abs(latestPiEstimate - Math.PI) > accuracy) {       if (Thread.interrupted()) {         throw new InterruptedException();       }       iteration++;       sign = -sign;       latestPiEstimate += sign * 4.0 / ((2 * iteration) - 1);     }   }   public static void main(String[] args) {     PiInterrupt pi = new PiInterrupt();     Thread t = new Thread(pi);     t.start();     try {       Thread.sleep(10000);       t.interrupt();     } catch (InterruptedException x) {     }   } }