可能是一个基本问题。但我对它有点困惑。在我的设计中,我有一个通过鼠标点击启动的线程。方法看起来像这样:
Runnable r = new Runnable(){
public void run(){
A.firstMethod();
A.SecondMethod();
B.FirstMethod();
B.SecondMethod();
B.ThirdMethod();
}
};
new Thread(r).start();
这里B.FirstMethod(), B.SecondMethod(), B.ThirdMethod();
访问相同的变量并在执行期间执行一些数据库操作(即锁定,读取,写入等)。但是,如果在执行期间或在完成所有任务之前单击鼠标,我经常会从数据库中收到错误消息。我该如何处理这种情况。在这里,我不能强迫用户只使用简单的进度条等待。
答案 0 :(得分:0)
要处理这种情况,可以在线程开始执行后禁用该按钮,并在线程完成执行后再次启用它。 然后代码如下所示:
Runnable r = new Runnable()
{
public void run()
{
button.setEnabled(false);
A.FirstMethod();
A.SecondMethod();
B.FirstMethod();
B.SecondMethod();
B.ThirdMethod();
button.setEnabled(true);
}
};
new Thread(r).start();
或者当单击按钮时,您可以使用布尔变量来检查线程是否正在进行中,然后决定需要执行的操作,如:
volatile boolean inProgress = false; // Instance Variable
Runnable r = new Runnable()
{
public void run()
{
inProgress = true;
A.FirstMethod();
A.SecondMethod();
B.FirstMethod();
B.SecondMethod();
B.ThirdMethod();
inProgress = false;
}
};
if(!inProgress)
new Thread(r).start();
else
Popup some message perhaps