从鼠标点击管理线程

时间:2014-03-24 07:10:30

标签: java multithreading methods

可能是一个基本问题。但我对它有点困惑。在我的设计中,我有一个通过鼠标点击启动的线程。方法看起来像这样:

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();访问相同的变量并在执行期间执行一些数据库操作(即锁定,读取,写入等)。但是,如果在执行期间或在完成所有任务之前单击鼠标,我经常会从数据库中收到错误消息。我该如何处理这种情况。在这里,我不能强迫用户只使用简单的进度条等待。

1 个答案:

答案 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