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

进程与线程

开发平台:

Java

  1. public class GeneralInterrupt extends Object implements Runnable {
  2. public void run() {
  3. /*
  4. try {
  5. System.out.println("in run() - about to sleep for 20 seconds");
  6. work();
  7. System.out.println("in run() - woke up");
  8. } catch ( InterruptedException x ) {
  9. System.out.println("in run() - interrupted while sleeping");
  10. //return;
  11. }
  12. */
  13. try {
  14. System.out.println("in run() - about to work2()");
  15. work2();
  16. System.out.println("in run() - back from  work2()");
  17. } catch ( InterruptedException x ) {
  18. System.out.println("in run() - interrupted in work2()");
  19. return;
  20. }
  21. System.out.println("in run() - doing stuff after nap");
  22. System.out.println("in run() - leaving normally");
  23. }
  24. public void work2() throws InterruptedException {
  25. while ( true ) {
  26. if ( Thread.currentThread().isInterrupted() ) {
  27. System.out.println("C isInterrupted()=" + 
  28. Thread.currentThread().isInterrupted());
  29. Thread.sleep(2000);
  30. System.out.println("D isInterrupted()=" + 
  31. Thread.currentThread().isInterrupted());
  32. }
  33. }
  34. }
  35. public void work() throws InterruptedException {
  36. while ( true ) {
  37. for ( int i = 0; i < 100000; i++ ) {
  38. int j = i * 2;
  39. }
  40. System.out.println("A isInterrupted()=" + 
  41. Thread.currentThread().isInterrupted());
  42. if ( Thread.interrupted() ) {
  43. System.out.println("B isInterrupted()=" + 
  44. Thread.currentThread().isInterrupted());
  45. throw new InterruptedException();
  46. }
  47. }
  48. }
  49. public static void main(String[] args) {
  50. GeneralInterrupt si = new GeneralInterrupt();
  51. Thread t = new Thread(si);
  52. t.start();
  53. // be sure that the new thread gets a chance to run for a while
  54. try { Thread.sleep(2000); } catch ( InterruptedException x ) { }
  55. System.out.println("in main() - interrupting other thread");
  56. t.interrupt();
  57. System.out.println("in main() - leaving");
  58. }
  59. }