Блок 2 потока, обращающиеся к одному, если блок в Java
У меня есть цикл while в методе. В цикле while у меня много блоков if. Если у меня есть 2 потока, одновременно обращающихся к одному циклу while, как остановить один уникальный блок if одновременно. Должен ли я импортировать что-нибудь?
while (true){
if (condition){
if (statement 1){//}
else if (statement){//} //I want only one thread to access this block at a time
else if (statement2 ){//}
else{//}
}
else if condition1 ){
if (statement 1){//}
else if (statement){//} //I want only one thread to access this block at a time
else if (statement2 ){//}
else{//}
}
}
else if (condition 2){
if (statement 1){//}
else if (statement){//} //I want only one thread to access this block at a time
else if (statement2 ){//}
else{//}
}
}
else{
if (statement 1){//}
else if (statement){//} //I want only one thread to access this block at a time
else if (statement2 ){//}
else{//}
}
}
1 ответ
Есть несколько способов добиться этого, но почему бы вам не попробовать синхронизированный блок?
while(true) {
if (statement){//}
else if (statement){ //I want only one thread to access this block at a time
synchronized(this) {
//your critical section here
}
}
else if (statement){//}
else{//}
}