나는 목록이있는 클래스를 작성 중입니다. 그리고 실행 방법 Runnable
에서 목록을 인스턴스화합니다. 다음과 같이 :스레드의 목록의 메모리 범위
public void sendEmailToLegalUsers() {
Log.info("JYM====================================");
try {
new Runnable() {
public void run() {
userCns = new ArrayList<String>();
recipients = new ArrayList<String>();
///other codes
}
};
} catch (Exception e) {
Log.info("Error occurred in LDAPSendMail: "+ e.getMessage());
}
Log.info("END====================================");
}
이제 sendEmailToLegalUsers 메서드가 호출 될 때마다 새 스레드가 생성됩니다. 이제 목록의 메모리 범위가 클래스 수준에 한정되어 있는지 궁금합니다. 클래스 수준에 바인딩되어 있고이 메서드가 두 번 호출되는 경우 스레드 1이 만든 목록의 어떤 일이 발생하는지도 궁금합니다. 스레드 2) 또는 스레드가 자신의 범위에서 실행될 때 목록은 각 스레드에 대해 다른 범위를 갖게됩니다. 두 개 또는 여러 개의 스레드간에 목록 데이터가 혼합 될 가능성이 있습니까?
설명 주셔서 대단히 감사합니다. –