0
public class CalendarTest {
private Calendar cal;
public void setCalendar(Calendar cal){
this.cal = (Calendar) cal.clone(); (1)
}
public static void main(String args[]){
CalendarTest obj = new CalendarTest();
Calendar cal = new GregorianCalendar();
new Thread(new Runnable() {
@Override
public void run() {
//cal.setSomething; (2)
}
}).start();
obj.setCalendar(cal);
}
}
클론()에서 칼 객체에서 호출 (1)과 칼의 상태가 (2), 어떻게 것이다 복제 동작합니다 변경할 경우 같은 시간에. 1 개의 thread가 달력 객체의 필드를 복제하고있어, 다른 thread가 같은 달력 객체에의 기입을 실시하고있는 경우, 결과적으로 일관성이없는 Calendar 객체가 발생합니다.달력 개체 복제 방법
어떻게 이런 종류의 시나리오를 처리 할 수 있습니까?
주 메소드의 스레드 작성은 예제 일 뿐이지 만 클라이언트 코드는 일반적으로 setCalendar() 메소드를 호출합니다.
정의되지 않았으므로 pickedup이 먼저 들어갑니다. –