Java,代替while(true)循环的东西

Java,代替while(true)循环的东西,java,loops,callback,while-loop,Java,Loops,Callback,While Loop,我开发了虚拟键盘模块,它包含2个类 KBM(模块本身)(按enter键时,它将字符串数据的值设置为我在KBMListener中键入的文本,在KBMListener中布尔值更改为true) KBMListener 主机 大型机正在做什么: 当我运行程序时,大型机加载GUI并在“public void run()”中启动“while(true)”循环。这个循环看起来像: while(true){ if(status_changed){ jTextArea.setText(ge

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

  • KBM(模块本身)(按enter键时,它将字符串数据的值设置为我在KBMListener中键入的文本,在KBMListener中布尔值更改为true)
  • KBMListener
  • 主机
  • 大型机正在做什么:

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

    while(true){
        if(status_changed){
            jTextArea.setText(getKbml().getData());   
            getKbml.setStatus_changed(false);
        }
        sleep(500);
    }
    
    更改的布尔状态在键盘侦听器中更改

    KBM是虚拟键盘。当用户键入文本并按enter键时,它会将字符串数据设置为文本类型,并在KBMListener中将布尔状态更改为true

    KBML只是将大型机与KBM连接起来,每次用户点击大型机中的文本区域时,都会从KBM加载键盘

    我想要的是每0.5秒或在按下enter键时立即向大型机获取值

    虽然环路工作正常,但在1.6GHz双核处理器上,cpu使用率约为12%。
    我听说了回调,但我不明白它是如何工作的。我希望有人能帮助我。。。请尽量避免使用文档监听器。

    您要研究的是观察者设计模式。它使用一个接口通知“监听器”更改,通常是无限循环的答案。您可以在此处找到一个简单的实施示例+更多信息:


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

    为什么你在一个段落中发布无效的伪代码,而不是发布实际代码(即使是简化的代码)?你的问题目前更难理解。展示你在代码中尝试过的东西。这比代码的大描述更容易理解。为什么你不想使用DocumentListener?在我看来,这正是你高效实现此功能所需要的…它的独立模块,我想在其他应用程序中使用它,无需修改module.public类MainFrame extends javax.swing.JFrame实现Runnable,如何使用obser进行扩展。如果它使用JFrame?@user1934053进行扩展,则无需扩展任何内容。只需实现侦听器接口。我链接到的教程使用了内置的observer类,这不是很好,对此我很抱歉。只要在谷歌上搜索“观察者模式”,你会发现很多信息,但我很惊讶Java没有得到好的结果。。。