while 루프를 실행하면 java가 매개 변수가 true인지 계속 확인합니까? 예를 들어, while 루프는 while-loop stop mid-execution?
while(k=7) {
Thread.sleep(5000);
}
하지만 다른 스레드의 변화가 8 k는 5 초간
은, 루프를 즉시 대기 또는 종료 계속하는 경우?while 루프를 실행하면 java가 매개 변수가 true인지 계속 확인합니까? 예를 들어, while 루프는 while-loop stop mid-execution?
while(k=7) {
Thread.sleep(5000);
}
하지만 다른 스레드의 변화가 8 k는 5 초간
은, 루프를 즉시 대기 또는 종료 계속하는 경우?아니요, 실행 경로가 실행될 때만 확인합니다. 따라서, 귀하의 예제에서 5 초마다 점검합니다.
즉시 알림을 받으려면 wait(), notify() 또는 다른 동기화 메서드를 사용해야합니다. 여기
는 example
루프가 반복 될 때마다 신체의 실행 후에 일단 입력 된 경우, 조건이 개시시 한번 확인되고있다. 따라서 신체가 실행되는 동안 k
이 변경 되더라도 즉시 종료되지 않습니다.
아, 아마도 k == 7
을 의미했을 것입니다 (=
이 지정하는 동안 ==
과 비교). 일부는 잠재적으로이 실수를 피하기 위해 7 == k
으로 작성합니다.
이것은 실제로 스레드와 관련이 없습니다. 예를 들어, 고려 : 몸이 아직 완전히 심지어 k
불구하고 실행하는 방법을
int k = 7;
while (k == 7) {
k = 8;
System.out.println("here!");
}
here!
사항은 즉시 값을 더 이상 만족 루프 조건으로 변경됩니다.
아니요. k
이 휘발성 (또는 더 나쁜 것은 휘발성이 아닌 다른 스레드에서 변경된 경우, 나쁜 아이디어) 또는 루프 내부에서 호출되는 메소드를 통해 속성이 변경 될 수있는 객체 인 경우에만 확인됩니다. 루프 본문의 끝. 본문을 반복하거나 루프를 계속지나 가기로 결정합니다.
스레드를 중단하고 루프 밖에서 catch를 사용하거나 내부 검사 및 break
을 사용하여 루프를 나눌 수 있습니다.
당신은'=='대신'='를 사용하고 있습니다. 오타가있을 수 있습니다. 둘째,'k'는 인스턴스 변수입니까? –
'k' 란 무엇입니까? 당신은 그것에 관련된 코드를 생략했습니다 ... –
각 라인은 그것이 말하는 것과 더 이상하지 않습니다. 다른 시나리오에서 주변의 다른 행이 무엇을할지 모릅니다. 그것이 자고있을 때, 그것은 그것이하는 모든 것입니다. BTW가 즉시 멈춘다면 잠자는 시간을 설정하는 것이 무엇이겠습니까? –