본문 바로가기

Synchronized3

java #3 [ArrayList, LinkedList, SynchronizedList] ArrayList java Collection 객체에서 제공하는 가장 대표적인 List 형태의 자료구조 입니다. 배열의 값들이 메모리에 이어져 나열됩니다. ArrayList 특성상 이어 쓰고 읽기에 가장 적합한 구조를 가지고 있습니다. LinkedList ArrayList와는 조금 다르게 각각의 하위 단위의 값들이 다음 값의 주소를 내부적으로 가지고 있습니다. 따라서 서로 이어 쓰거나 중간의 내용을 삭제 할때는 빠른 속도나 안정성이 주어지지만 읽기에는 다음 값의 주소를 찾는 시간 때문에 ArrayList보다 시간이 더 걸리고 데이터가 많아지면 많아질수록 성능은 보장 할 수 없습니다. SynchronizedList 마지막으로 이전 포스트에서 ConcurrentHashMap과 동일하게 멀티 스레드 환경에서 .. 2020. 7. 6.
lombok #2 [Lazy Getter] Lazy Getter 개발자 입장에선 게으르다는 뜻이 딱히 나쁜 뜻은 아닙니다. 문서를 정리하거나 데이터 등을 수집할 때에도 수동으로 작업하기 보단 자동화하거나 혹은 만일의 사태에 대비하는 경우도 많은데 사실 이 모든게 수동으로 작업되는 계산들을 최소화 하기 위한 것들이 아닐까 싶습니다. java에서 지원하는 Lazy 클래스나 lombok의 lazy getter도 위에 말한 내용과 비슷하게 접목되지 않을까 싶습니다. 만약 우리가 멀티 스레드 환경에서 static한 변수나 Dao 객체의 파라미터에서 특수한 계산하는 경우에 비집고 들어오는 타 스레드들 때문에 내가 원하는 값이 아닌 제 2의 3의 경우가 발생하게 되는데요. Lazy Getter는 파라미터의 값이 비집고 들어오는 타 스레드의 영향을 받지 않고 .. 2020. 7. 3.
java #2 [HashMap, ConcurrentHashMap] 쓰레드에 더 유용하게 사용하는 자료구조 Dao 객체를 만들어서 사용하는게 더 나은 방법이 될 수도 있겠지만 자료구조를 잘 활용하는 것이 때로는 더 적은 리소스로 더 나은 성능을 만들수 있다고 믿습니다. 그중에서도 HashMap과 ConcurrentHashMap은 이름이 비슷하지만 사용시에 확연히 다른 모습을 보여줍니다. HashMap의 특징을 먼저 보겠습니다. null을 key 값으로 허용합니다. 중복을 허용하지 않습니다. 순서나 동기화를 보장하지 않습니다. ConcurrentHashMap의 특징을 보겠습니다. null을 허용하지 않습니다. 중복을 허용하지 않습니다. 순서는 보장하지 않지만 동기성은 보장합니다. 위와 같이 보았을때 스레드 상에서 ConcurrentHashMap을 사용하면 더 좋은 효과를 .. 2020. 6. 26.