PiInterrupt.java
上传用户:songled
上传日期:2022-07-14
资源大小:94k
文件大小:1k
源码类别:

进程与线程

开发平台:

Java

  1. public class PiInterrupt extends Object implements Runnable {
  2. private double latestPiEstimate;
  3. public void run() {
  4. try {
  5. System.out.println("for comparison, Math.PI=" + 
  6. Math.PI);
  7. calcPi(0.000000001);
  8. System.out.println("within accuracy, latest pi=" + 
  9. latestPiEstimate);
  10. } catch ( InterruptedException x ) {
  11. System.out.println("INTERRUPTED!! latest pi=" + 
  12. latestPiEstimate);
  13. }
  14. }
  15. private void calcPi(double accuracy) 
  16. throws InterruptedException {
  17. latestPiEstimate = 0.0;
  18. long iteration = 0;
  19. int sign = -1;
  20. while ( Math.abs(latestPiEstimate - Math.PI) > 
  21. accuracy ) {
  22. if ( Thread.interrupted() ) {
  23. throw new InterruptedException();
  24. }
  25. iteration++;
  26. sign = -sign;
  27. latestPiEstimate += 
  28. sign * 4.0 / ( ( 2 * iteration ) - 1 );
  29. }
  30. }
  31. public static void main(String[] args) {
  32. PiInterrupt pi = new PiInterrupt();
  33. Thread t = new Thread(pi);
  34. t.start();
  35. try {
  36. Thread.sleep(10000);
  37. t.interrupt();
  38. } catch ( InterruptedException x ) {
  39. // ignore
  40. }
  41. }
  42. }