多线程中的条件

问题描述 投票:0回答:1

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

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情况时,它会在两个条件中执行代码,但在使用开关时,它只执行指定的大小写。任何人都可以详细说明。我很困惑。提前致谢

java multithreading netbeans-8
1个回答
3
投票

这个:

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(); }

但是总是使用大括号并且每行放一个语句是一个相当不错的主意,所以你的意图很明确。

© www.soinside.com 2019 - 2024. All rights reserved.