另一种方式,暂停和恢复 : 线程状态 « 线程 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 线程 » 线程状态屏幕截图 
另一种方式,暂停和恢复
另一种方式,暂停和恢复
 
public class AlternateSuspendResume extends Object implements Runnable {

  private volatile int firstVal;

  private volatile int secondVal;

  private volatile boolean suspended;

  public boolean areValuesEqual() {
    return (firstVal == secondVal);
  }

  public void run() {
    try {
      suspended = false;
      firstVal = 0;
      secondVal = 0;
      workMethod();
    catch (InterruptedException x) {
      System.out.println("interrupted in workMethod()");
    }
  }

  private void workMethod() throws InterruptedException {
    int val = 1;

    while (true) {
      // blocks if suspended is true
      waitWhileSuspended();

      stepOne(val);
      stepTwo(val);
      val++;

      // blocks if suspended is true
      waitWhileSuspended();

      Thread.sleep(200)// pause before looping again
    }
  }

  private void stepOne(int newValthrows InterruptedException {

    firstVal = newVal;
    // simulate some other lengthy process
    Thread.sleep(300);
  }

  private void stepTwo(int newVal) {
    secondVal = newVal;
  }

  public void suspendRequest() {
    suspended = true;
  }

  public void resumeRequest() {
    suspended = false;
  }

  private void waitWhileSuspended() throws InterruptedException {
    while (suspended) {
      Thread.sleep(200);
    }
  }

  public static void main(String[] args) {
    AlternateSuspendResume asr = new AlternateSuspendResume();

    Thread t = new Thread(asr);
    t.start();

    try {
      Thread.sleep(1000);
    catch (InterruptedException x) {
    }

    for (int i = 0; i < 10; i++) {
      asr.suspendRequest();

      try {
        Thread.sleep(350);
      catch (InterruptedException x) {
      }

      System.out.println("dsr.areValuesEqual()=" + asr.areValuesEqual());

      asr.resumeRequest();

      try {
        Thread.sleep((long) (Math.random() 2000.0));
      catch (InterruptedException x) {
      }
    }
    System.exit(0);
  }
}

           
         
  
Related examples in the same category
1. 线程是否活着线程是否活着
2. 线程睡眠线程睡眠
3. 另一种方式停止一个线程另一种方式停止一个线程
4. 暂停和恢复暂停和恢复
5. 线程睡眠中断线程睡眠中断
6. 守护线程守护线程
7. Pausing the Current Thread: a thread can temporarily stop execution.
8. Pausing a Thread: set a variable that the thread checks occasionally, call Object.wait()
9. 异常处理程序
10. 监视线程的地位。
11. 暂停执行
12. 中断一个线程。
13. Stopping a Thread: set a variable that the thread checks occasionally
14. 是否一个线程已完成
15. 添加延迟
16. 暂停执行线程使用睡眠方法
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.