是否可以进行循环运行,例如检查是否发生了鼠标移动,而程序正在运行另一个循环来执行其他操作。我知道我可以在彼此内部使用循环,但这对于我的程序识别鼠标的移动来说效率不够,因为在我的程序中需要大约30分钟才能发生任何更改。
以防万一我不明白我的问题......我问的是同一个班级是否可以同时发生两个循环而不会相互干扰。
答案 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。