gpt4 book ai didi

java - 高效监控 int 值

转载 作者:行者123 更新时间:2023-12-02 09:36:30 26 4
gpt4 key购买 nike

我将代码更改为更详细的版本,以便您可以更好地了解我的问题。

我需要“观察”一个整数值并在它发生变化时立即响应。到目前为止,我发现的最好方法是在无限循环中使用线程。

以下是我的项目的一个大大简化的部分。总而言之,通过单击 Bubble 类中的按钮将 notificationValue 设置为 1。我需要小程序能够监视此 notificationValue 并在其更改时做出响应。

这是我的小程序:

public class MyApplet extends JApplet
{
Bubble myBubble = new Bubble();
public void run()
{
new Thread(
new Runnable() {
public void run() {
while(true) {
if(myBubble.getNotificationValue() == 1) {
/* here I would respond to when the
notification is of type 1 */
myBubble.resetNotificationValue;
}
else if(myBubble.getNotificationValue() == 2) {
/* here I would respond to when the
notification is of type 2 */
myBubble.resetNotificationValue;
}
else if(myBubble.getNotificationValue() != 2) {
/* if it is any other number other
than 0 */
myBubble.resetNotificationValue;
}

// don't do anything if it is 0
}
}
}).start();
}
}

这是我的类(class):

public class Bubble extends JPanel
{
public JButton bubbleButton;

public int notificationValue = 0;

public int getNotificationValue()
{
return notificationValue;
}
public void resetNotificationValue()
{
notificationValue = 0;
}

protected void bubbleButtonClicked(int buttonIndex)
{
notificationValue = buttonIndex;
}

public Bubble()
{
bubbleButton = new JButton();
bubbleButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event)
{
bubbleButtonClicked(1);
}
});
}
}

但显然这会使 CPU 保持在 100% 的状态,而且效率根本不高。更好的方法是什么? (假设我无法更改任何负责更改整数的方法。)

最佳答案

immediately respond to when it changes

这到底需要多“立即”?在 while 循环中添加 Thread.sleep(10) 可能会将 CPU 负载降低到接近于零。

What would be a better way to do this? (Assume I can't change any of the methods responsible for changing the integer.)

更好的方法是不直接公开字段。这是封装好处的一个很好的例子 - 拥有一个 setter 方法将使实现观察者模式变得微不足道。

关于java - 高效监控 int 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8002353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com