Я хочу немедленно завершить цикл на основе какого-либо внешнего ввода (int, string или чего-то еще), но я не знаю, когда он появится, есть ли какой-то асинхронный метод в java, чтобы действовать в точный момент, когда приходит указанный c ввод?
Пример более или менее того, что я хочу сделать:
public void run(){
while(/*condition*/){
//let's say it receives a String more times like this:
String s = inSocket.readLine();
// and in the bottom, I could put an if:
if(s.equals("stop")){
break;
}
}
// here some other code that I still want to execute, exiting the cycle
}
В этом случае цикл останавливается только на той конкретной строке, где я написал break
; Я хочу, чтобы он мог немедленно выйти из строя, в любое время, когда полученная строка будет «стоп», но я не знаю, когда это произойдет, поскольку я получаю несколько строк во время выполнения.
Второй пример (подробнее clear):
while(true){
/*line 0*/ String A = inSocket.readLine();
/*line 1*/
/*line 2*/ String B = inSocket.readLine();
/*line 3*/
/*line 4*/ String C = inSocket.readLine();
/*line 5*/
/*line 6*/ String D = inSocket.readLine();
/*line 7*/
if(/*A or B or C or D is "stop" */ ){
/*line 10*/ break;
}
}
Любая из предыдущих строк может быть stop
, моя проблема в том, что break
всегда будет выполняться в строке 10. Я хочу выполнить его немедленно после одной из этих строк stop
, и я не знаю, какая из четырех строк будет stop
.
Мне интересно, есть ли у java какой-нибудь метод, который может break
в строках 1,3,5,7 просто говоря "остерегайтесь stop
"; кроме решения поставить if
после каждой строки readLine.