当另一个循环在同一个类中运行时,是否可以循环运行

时间:2013-12-24 00:49:29

标签: java class loops

是否可以进行循环运行,例如检查是否发生了鼠标移动,而程序正在运行另一个循环来执行其他操作。我知道我可以在彼此内部使用循环,但这对于我的程序识别鼠标的移动来说效率不够,因为在我的程序中需要大约30分钟才能发生任何更改。

以防万一我不明白我的问题......我问的是同一个班级是否可以同时发生两个循环而不会相互干扰。

2 个答案:

答案 0 :(得分:5)

是。而且,这是一个例子 -

public static class Test implements Runnable {
  public Test(String name) {
    this.name = name;
  }

  private String name;

  public void run() {
    for (int i = 0; i < 5; i++) {
      System.out.println(name + ": " + i);
      System.out.flush();
    }
  }
}

public static void main(String[] args) {
  Thread a = new Thread(new Test("A"));
  Thread b = new Thread(new Test("B"));
  b.start();
  a.start();
  System.out.println("Mainly 1");
  try {
    b.join();
    a.join();
  } catch (InterruptedException e) {
    e.printStackTrace();
  } finally {
    System.out.println("Mainly 2");
  }
}

这可能会导致我的测试结果的轻微变化

B: 0
Mainly 1
A: 0
B: 1
B: 2
A: 1
B: 3
B: 4
A: 2
A: 3
A: 4
Mainly 2

答案 1 :(得分:3)

您需要的是执行并发“进程”(更确切地说,线程)。检查The Java Tutorials: Concurrency

从教程中引用:

  

计算机用户理所当然地认为他们的系统一次可以做多件事。他们假设他们可以继续在文字处理器中工作,而其他应用程序则下载文件,管理打印队列和流式传输音频。即使是单个应用程序通常也希望一次完成多个任务。 [...]可以执行此类操作的软件称为并发软件。

     

Java平台的设计初衷是为了支持并发编程,在Java编程语言和Java类库中提供基本的并发支持。从5.0版开始,Java平台还包含了高级并发API。