2017-02-24 1 views
0

그 방법은, 내가 으로 CopyOnWriteArrayList 동기화 방법

final List<MyType> list = new CopyOnWriteArrayList(); 

을 가지고 내가 가지고 말할 수 방법

public void update(Task task) { 
    synchronized (tasksList) { 
      int index = tasksList.indexOf(task); 
      validateIndex(index); 
      tasksList.set(index, task); 
     } 
} 

나는 "으로 CopyOnWriteArrayList는 방법을 동기보다 생각 설정 "이 (가)

내 방법은 내가 모니터 (동기화 (tasksList) 내 목록을 잠글) 왜 방법이 제대로 작동합니다. taskList가 이미 위의 행을 막았으므로 행 (tasksList.set (index, task);)이 작동하지 않는다고 생각했습니다.

답변

0

동일한 스레드가 동기화 된 메서드를 호출 할 수 있습니다. 이 스레드는 모니터를 소유하므로 두 번째 호출이 생성되지 않습니다.