Thread에 관하여 잘 모르기에 질문 드립니다.
우선, Main class에는 멤버변수 ArrayList<AClass> mAClass; 가 있습니다.
onCreate() 함수 내에 SharePreferences를 통하여 HashSet<String>형태의 과거 사용값을 가져온 후
while ( hashSetIterator.hasNext() ) {
final String fBVariable = hashSetIterator.next().toString();
new Thread(new Runnable() {
public void run() {
mAClass.add( CMethod(fBVariable ) );
}
}).start();
}
와 같은 방식으로 thread를 생성하여 작업하려 합니다.
CMethod() 의 처리 과정은 fBVariable에 따라서 처리속도가 달라지는데, 이러한 경우
HashSet<String>의 결과 순서물과 mAClass의 결과 순서물이 같을지 모르겠습니다.
1. Thread를 통하여 해당 Class의 멤버변수에 값을 할당하는 방식은 위와 같이 하는 것이 맞습니까?
혹시, 위 방법이 틀리다면 다른 방법을 알려주시면 감사하겠습니다.
2. 결과물의 방식이 같습니까? 실제 처리속도가 다르다면 mAClass에 할당되는 순서도 다를 것 같아서, 한 변수에 동시 접근 하지 못하도록 막는 방법을 찾아보았지만, syncronized를 사용하는 것 같은데 정확히 맞는 것인지 모르겠습니다. mAClass에 add하는 구간을 syncronized로 감싸서 수행하는 것이 맞습니까?
읽어주셔서 감사합니다.