我有一个这样的循环:
while(sortie == false) {
int availableBytes = 0;
try {
read = 0;
availableBytes = inputStream.available();
if (availableBytes > 0) {
System.out.println("je suis dans le availableBytes > 0 du while -- read = "+read); read = read + availableBytes;
int raw = inputStream.read(readBuffer, read-availableBytes, availableBytes);
traduction = new String(readBuffer, read-availableBytes, raw);
System.out.println("2=>" + traduction);
tradV2 = tradV2 + traduction; // bytes -> String
}
if (read == 19){
System.out.println("une donnee de 19 char lue -- read = "+read);
}
} catch (IOException e) {
}
}
在调用之前,我会进行初始化并设置端口参数。
我有一个像这样声明的JButton动作监听器:
JB_MeasurMode.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
sortie = true;
}
});
所以我正在尝试做它,它进入“测量模式”,这意味着程序保持读取模式到端口com。为了退出这个“测量模式”,我添加了一个jbutton,它应该改变while条件以退出它。 但是我的问题是,当我进入while循环时,我的所有按钮都被“冻结”,我无法点击。
当我这样做时,“InputStream.Read”会阻止所有其他事件吗?
答案 0 :(得分:0)
你正在做什么"而" -loop被称为POLLING。
我建议你实施应该同时实施的解决方案。
1 - Thread.currentThread()。sleep(millis) - 在循环结束时
2 - 在单独的线程中启动循环,记住安全线程布尔变量,如 java.util.concurrent.atomic.AtomicBoolean