웹프로그램에서의 동기화 꼭 필요할까요?
세실
안녕하세요. 또다시 새로운 한 주가 시작되었네요...모두 활기찬 한 주 보내시길 바랍니다 ^^
다름 아니라 궁굼증이한가지 생겨서 이렇게 질문드립니다.
jsp(web)에서 말입니다. 컬렉션 사용시궂이 동기화 되는 hashtable이나 vector를 사용해야 할 필요가 있을까요?
속도차원에서 하는 질문이 아니고, 제 개념상으론 궂이 동기화 시켜 사용 할 필요가 없다고
사료되는데, 구현된 웹어플리케이션을 보면 arraylist보다 vector를 사용하는 쪽이 많고
또 hashmap보다는hashtable을 사용하는 쪽이 더 많이 보여서 드리는 질문입니다.
날씨가 많이 덥네요 더운날씨까지 날려 줄 시원한 답변 부탁드립니다!~^^
-
차분
찬님 설명이 정확할거 같네요.. 생각은 해도 글을 적는게 어려운데 항상 잘 설명해 주시는군요^^
-
피어나
답변 감사드립니다. 꾸벅(_ _) (- -)
-
거울
그리고 이미 아시겠지만, 벡터나 해시테이블이 멀티스레드에 안전하게 되어 있다고는 하지만,
그것은 그 객체 자체를 사용할때에만 안전하게 되어 있다는 말입니다.
즉 vector에서 하나의 객체를 꺼내오고 넣을때에만 안전하다는것이지,
vector에 들어 있는 갯수를 꺼내온뒤에, 다른 연결되어 있는곳에서 vector에서 하나의 객체를 지우게
된다면 예전에 꺼내 왔던 갯수는 이미 잘못된 정보를 가지게 됩니다.
이 점 유의해야 겠지요. -
타키
메소드 내부에서 사용되는 변수들은 동기화 될 필요가 당연히 없을겁니다.
( 이는 당연하게도 multi thread에서도 안전할것이므로 )
하지만 jsp나 서블릿에서는 필드로 선언되어 사용되는 경우에는,
multi thread가 접근할 수 있기 때문에, 안전을 위해서 동기화는 어쩔 수 없는 선택이 아닌가 생각이 됩니다. -
맨삶이
백터와 해시테이블은 내부적으로 멀티스레드에서도 안전할 수 있게 동기화 되어있는것으로 알고있습니다.
-
잇힝
죄송하지만, 딴지 거는게 아니라
컬렉션 사용시 동기화라는 표현이 무엇인지 이해가 되지 않습니다.
어느 부분에서 동기화를 말씀하시는건지?