Блок 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{//}
}
Другие вопросы по тегам