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

进程与线程

开发平台:

Java

  1. public class DeprecatedSuspendResume 
  2. extends Object 
  3. implements Runnable {
  4. private volatile int firstVal;
  5. private volatile int secondVal;
  6. public boolean areValuesEqual() {
  7. return ( firstVal == secondVal );
  8. }
  9. public void run() {
  10. try {
  11. firstVal = 0;
  12. secondVal = 0;
  13. workMethod();
  14. } catch ( InterruptedException x ) {
  15. System.out.println(
  16. "interrupted while in workMethod()");
  17. }
  18. }
  19. private void workMethod() throws InterruptedException {
  20. int val = 1;
  21. while ( true ) {
  22. stepOne(val);
  23. stepTwo(val);
  24. val++;
  25. Thread.sleep(200);  // pause before looping again
  26. }
  27. }
  28. private void stepOne(int newVal) 
  29. throws InterruptedException {
  30. firstVal = newVal;
  31. Thread.sleep(300);  // simulate some other long process
  32. }
  33. private void stepTwo(int newVal) {
  34. secondVal = newVal;
  35. }
  36. public static void main(String[] args) {
  37. DeprecatedSuspendResume dsr = 
  38. new DeprecatedSuspendResume();
  39. Thread t = new Thread(dsr);
  40. t.start();
  41. // let the other thread get going and run for a while
  42. try { Thread.sleep(1000); } 
  43. catch ( InterruptedException x ) { }
  44. for ( int i = 0; i < 10; i++ ) {
  45. t.suspend();
  46. System.out.println("dsr.areValuesEqual()=" + 
  47. dsr.areValuesEqual());
  48. t.resume();
  49. try { 
  50. // Pause for a random amount of time 
  51. // between 0 and 2 seconds.
  52. Thread.sleep( 
  53. ( long ) (Math.random() * 2000.0) );
  54. } catch ( InterruptedException x ) {
  55. // ignore
  56. }
  57. }
  58. System.exit(0); // abruptly terminate application
  59. }
  60. }