0

メソッドに while ループがあります。そのwhileループには、多くのifブロックがあります。2 つのスレッドが 1 つの while ループに同時にアクセスしている場合、1 つの一意の 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{//}
              }
     }
4

1 に答える 1

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{//}
}
于 2016-11-05T13:28:54.513 に答える