나는 (int i ...) 루프에 대한 구식을 사용하여 자바리스트를 반복하고 싶다. 왜냐하면 주어진 i와 루프 반복에 대해 i와 관련된 여러 요소에 접근하고 싶다. 그렇다면 (Object o : objects) for list iterator를 사용할 수 없습니다.자바 동기화에 대한 간단한 질문
내가 실행하는 동안 다른 코드가 목록에 액세스하지 못하게하려면 어떻게해야합니까? 경로 개체가 목록을 들고, 또한
synchronized(path){
for (int i = 0; i < path.getPoints().size(); i++){
...
}
}
와도
synchronized(this){
for (int i = 0; i < path.getPoints().size(); i++){
...
}
}
어디 "이"하고 싶은 렌더러입니다
나는
synchronized(path.getPoints()){
for (int i = 0; i < path.getPoints().size(); i++){
...
}
}
시도 동기화 문제없이 경로를 제대로 렌더링합니다. 사전에
감사합니다,
마틴
게시 한 동기화 코드는 세 가지 경우 모두 작동해야합니다. 동기화 가드 밖의 경로에 액세스하는 다른 스레드가없는 것이 확실합니까? – templatetypedef
다른 스레드가 목록에 액세스하는 이유는 무엇입니까? – 3urdoch
@ murdoch : 백그라운드에서 실행중인 편집기 스레드 하나와 UI 스레드 하나가 연속적으로 실행되고 점 목록을 렌더링했습니다. @template :이 두 스레드 중 하나만 동기화하는 중이었습니다 – Martin