PiInterrupt.java Source code

Java tutorial

Introduction

Here is the source code for PiInterrupt.java

Source

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) {
        }
    }
}