多线程条件

Conditions in Multuithreading

我有一段控制两个线程的代码。

synchronized public void run() {
  switch(ThreadChoice){
      case 1:
      dataBase();
      break;
      case 2:
      ViewTotal.choice=1;new ViewTotal().displayDatabase();
     break;
  }
}

当我使用 SWITCH 语句时,它工作正常,但如果我使用 if,if-else 或 if-else-if,它不能正常工作。 这是带有 if 语句的代码。

synchronized public void run() {

  if(ThreadChoice==1)dataBase();
  else if(ThreadChoice==2)ViewTotal.choice=1;new ViewTotal().displayDatabase();
}

在使用 if 情况时,它会在两种情况下执行代码,但在使用 switch 时,它只会执行指定的代码案件。谁能详细说明一下。我很困惑。提前致谢

这个:

if(ThreadChoice==1)dataBase();
else if(ThreadChoice==2)ViewTotal.choice=1;new ViewTotal().displayDatabase();

等同于:

if(ThreadChoice==1) {
  dataBase();
} else if(ThreadChoice==2) {
  ViewTotal.choice=1;
}
new ViewTotal().displayDatabase();

如果想让new ViewTotal().displayDatabase();只对ThreadChoice==2执行,需要用大括号,放在合适的大括号内:

if(ThreadChoice==1)dataBase();
else if(ThreadChoice==2) { ViewTotal.choice=1;new ViewTotal().displayDatabase(); }

但始终使用大括号并每行放置一个语句是一个相当不错的主意,这样您的意图就很明确。