Java,而不是while(true)循环

时间:2013-03-24 09:20:03

标签: java loops callback while-loop

我开发了虚拟键盘模块,它包含2个类

  1. KBM(模块本身)(在输入时按下它将字符串数据的值设置为我在KBMListener中输入的文本,并且在KBMListener中将布尔值更改为true)
  2. KBMListener
  3. 大型机
  4. 做什么是mainFrame:

    当我运行程序时,MainFrame加载GUI并在“public void run()”中启动“while(true)”循环。这个循环看起来像:

    while(true){
        if(status_changed){
            jTextArea.setText(getKbml().getData());   
            getKbml.setStatus_changed(false);
        }
        sleep(500);
    }
    

    在键盘监听器中更改了布尔状态status_changed。

    KBM是虚拟键盘。当用户键入文本并按Enter键时,它会在KBMListener中将字符串数据设置为textd并将boolean status_changed设置为true。

    KBML只需将MainFrame与KBM连接,每次用户点击进入大型机的textarea时,都会从KBM加载键盘。

    我想要的是每0.5秒或当按下输入时立即获得大型机的价值。

    虽然循环工作正常,但1.6GHz双核处理器的CPU使用率约为12%。 我听说过回调但我无法理解它是如何工作的。我希望有人可以帮助我...请尽量避免文件听众。

1 个答案:

答案 0 :(得分:1)

您需要了解的是Observer设计模式。它使用一个接口来通知“听众”变化,并且通常是无限循环的答案。您可以在此处找到一个简单的实施示例+更多信息:http://java.dzone.com/articles/design-patterns-uncovered

或者只是在网上搜索“observer pattern java”。