Java 值更改时要运行的函数
在发现我不能自动装箱自己的类型后,我仍然需要一个在赋值时自动调整的值。这会起作用吗,还是干脆冻结?如果不行,我们将不胜感激Java 值更改时要运行的函数,java,variables,onchange,Java,Variables,Onchange,在发现我不能自动装箱自己的类型后,我仍然需要一个在赋值时自动调整的值。这会起作用吗,还是干脆冻结?如果不行,我们将不胜感激 while(true){ if(x){ y=z } } 注:如果我能更好地解释我的课程,可能会有所帮助,因此: 它本质上与整数相同,但它需要一个最大值和一个最小值。我需要这样,当它的值>max时,它从min开始,反之亦然。 例如: 基本上,它是可配置的,并且至少未使用可配置的max对其进行签名。我看不到循环的任何终止条件,因此它将继续循环。
while(true){
if(x){
y=z
}
}
注:如果我能更好地解释我的课程,可能会有所帮助,因此:
它本质上与整数相同,但它需要一个最大值和一个最小值。我需要这样,当它的值>max时,它从min开始,反之亦然。
例如:
基本上,它是可配置的,并且至少未使用可配置的max对其进行签名。我看不到循环的任何终止条件,因此它将继续循环。我认为您可以执行以下两种操作之一:
中断
:
while(true){
if(x){
y=z;
break;
}
}
boolean found = false;
while(!found){
if(x){
y=z;
found = true;
}
}
我还建议在循环中设置一些时间间隔,例如100毫秒(Thread.sleep(100));否则它将连续循环单元
x
条件满足。好吧,如果它是这样写的,你可以做类似的工作(某种程度上):
volatile boolean x;
...
while (true) {
if (x) {
y = z;
break;
}
}
(请注意,您需要将x
声明为volatile,或者对此线程使用synchronized
同步,以可靠地查看另一个线程对x
的更新。)
然而,这是一种糟糕的实现方式。本质上,线程将持续执行该循环,直到x
设置为true
。这将占用大量系统内存带宽来限制一个内核。。。并耗尽机器的电池
更好的方法是将x
设为私有,并编写其setter,以便在变量更新时通知另一个线程
或者更好的方法是,使用事件/事件监听器或
java.util.concurrent
类之一实现您试图执行的任何操作。(很难建议哪一个是最好的,因为你的例子太做作了…“…不能自动装箱我自己的类型”,你是什么意思?还有这个“…赋值时自动调整自身的值。”。自动装箱就像使用UserDefinedClass=val而不是UserDefinedClass=new UserDefinedClass(val)一样,我认为这会允许我重载“=”,但java不支持。如果我使用它,我对如何为变量更改创建事件侦听器有点困惑。@user1825860-你误解了。通过调用setter进行变量更改。setter注意到变量实际上已经更改,并调用侦听器的回调来告诉litener“variable has change”事件已经发生。这种方法要求只通过调用setter方法来更改变量。。。
volatile boolean x;
...
while (true) {
if (x) {
y = z;
break;
}
}