多线程条件
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(); }
但始终使用大括号并每行放置一个语句是一个相当不错的主意,这样您的意图就很明确。
我有一段控制两个线程的代码。
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(); }
但始终使用大括号并每行放置一个语句是一个相当不错的主意,这样您的意图就很明确。