ここに私の問題を引き起こすいくつかのコードがあります。私は、温室の湿度を変更してJTextBoxに入れるアプリケーションを作成しています。湿度を変えるクラスと周囲の湿度を管理するクラスの2つのクラスがあります。 2つのクラスは1つのテキストボックスを共有し、問題は2つの値が互いに印刷されることがあることです。どうすればスレッドがテキストボックス入力と重ならないようにすることができますか?1つのJTextBoxを使用したマルチスレッド
private class humidControl implements Runnable {
public void run() {
try {
screen.setField(String.valueOf(calc.getHumid()), 21);
Thread.sleep(1000*humidTime);
while(on == true) {
calc.changeHumid();
screen.setField(String.valueOf(calc.getHumid()), 21);
if(calc.getHumidifier())
screen.setField("Humidifier is on", 24);
else if (!calc.getHumidifier());
screen.setField("Humidifier is off", 24);
Thread.sleep(1000*humidTime);
}
}
catch (InterruptedException e) {
return;
}
}
}
private class AmbientHumid implements Runnable {
public void run() {
try {
while(on == true) {
calc.ambientHumid();
screen.setField(String.valueOf(calc.getHumid()), 21);
Thread.sleep(1000*AhumidTime);
}
}
catch (InterruptedException e) {
return;
}
}
}
このセクションはヘルプサイト:[someone answers](http://stackoverflow.com/help/someone-answers)からお読みください。 –
なぜ同じフィールドを使用していますか?彼らは自分の畑を持っていてはいけませんか? – MadProgrammer
また、スイングはスレッドセーフではないので、EDTをブロックしたり、EDTの外部からuiを更新したりしないでください。 – MadProgrammer