2013-12-24 58 views
2

是否有可能有一个循环运行,比如检查鼠标是否发生了移动,而程序正在运行另一个循环做某事其他。我知道我可以将循环放在彼此的内部,但是这对于我的程序来说不足以识别鼠标的移动,因为在我的程序中需要大约30分钟才能发生任何变化。是否有可能有一个循环运行,而另一个循环运行在相同的类

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

+4

退房多线程我的测试结果稍有不同。 –

+0

很酷,非常感谢 – user2305544

+1

如果你在一个GUI中,你不应该“检查鼠标是否发生移动”,你应该设置一个回调,当鼠标移动时被调用。 –

回答

3

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

从教程引用:

电脑用户采取想当然地认为他们的系统可以同时做多件事情。他们假设他们可以继续在文字处理器中工作,而其他应用程序则下载文件,管理打印队列和流式传输音频。通常希望即使是单个应用程序一次只能执行一个以上的操作。 [...]可以做这种事情的软件被称为并发软件。

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

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 
相关问题