是否有可能有一个循环运行,比如检查鼠标是否发生了移动,而程序正在运行另一个循环做某事其他。我知道我可以将循环放在彼此的内部,但是这对于我的程序来说不足以识别鼠标的移动,因为在我的程序中需要大约30分钟才能发生任何变化。是否有可能有一个循环运行,而另一个循环运行在相同的类
以防万一我不清楚我的问题......我问两个循环是否可以在同一个班级同时发生而不会相互干扰。
是否有可能有一个循环运行,比如检查鼠标是否发生了移动,而程序正在运行另一个循环做某事其他。我知道我可以将循环放在彼此的内部,但是这对于我的程序来说不足以识别鼠标的移动,因为在我的程序中需要大约30分钟才能发生任何变化。是否有可能有一个循环运行,而另一个循环运行在相同的类
以防万一我不清楚我的问题......我问两个循环是否可以在同一个班级同时发生而不会相互干扰。
你需要的是执行并发的“进程”(更精确地说,线程)。检查The Java Tutorials: Concurrency。
从教程引用:
电脑用户采取想当然地认为他们的系统可以同时做多件事情。他们假设他们可以继续在文字处理器中工作,而其他应用程序则下载文件,管理打印队列和流式传输音频。通常希望即使是单个应用程序一次只能执行一个以上的操作。 [...]可以做这种事情的软件被称为并发软件。
Java平台的设计从头开始支持并发编程,在Java编程语言和Java类库中提供基本的并发支持。从版本5.0开始,Java平台还包含高级并发API。
是的。而且,这里有一个例子 -
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
退房多线程我的测试结果稍有不同。 –
很酷,非常感谢 – user2305544
如果你在一个GUI中,你不应该“检查鼠标是否发生移动”,你应该设置一个回调,当鼠标移动时被调用。 –