JAVA (12) 썸네일형 리스트형 Volatile Java Volatile 키워드를 사용하는 이유는? - 멀티 스레드 환경에서 변수의 visibility를 보장하기 위해서 사용한다. 멀티 스레드 환경에서 어플리케이션의 정상적인 동작을 보장하기 위해서는 2가지 요소가 필요하다. 1. Mutual Exclusion - 한 스레드만이 임계영역에서 실행된다. 2. Visibility - 한 스레드가 공유 데이터를 변경한 경우, 일관성을 유지하기 위해 다른 스레드에서도 변경된 데이터가 보인다. volatile 키워드를 사용하게 될 경우, mutula exclusion없이 두번째 요소인 visibility를 쉽게 보장할 수 있다. 참고문서 https://www.baeldung.com/java-volatile Java 익명 클래스와 람다 표현식의 다른 점 모든 익명클래스를 람다 표현식으로 바꾸는 것이 가능할까? 모든 익명클래스를 람다표현식으로 리팩토링하고 싶지만, 그것은 불가능하다. 익명 클래스와 람다 표현식의 다른점을 살펴보고 어떤 점이 문제가 되는지 알아보자. 1. this 가 가리키고 있는 것 익명 클래스에서의 this는 자기 자신을 가리키지만, 람다 표현식에서는 람다를 감싸는 클래스를 가리킨다. 실험을 위해 간단한 테스트 코드를 준비했다. T1클래스에 testLambda와 testAnonymous라는 메소드를 만들었다. testLambda의 경우 람다식을 이용해서 this를 출력하고, testAnonymous는 익명클래스를 이용해서 this를 출력한다. Main class에서는 T1 클래스로 인스턴스를 생성하여 testLambda와 testAnon.. LinkedHashMap 알아보기 HashMap은 Java에서 자주 사용하는 자료구조이다. 자료에 접근할 때 O(1)로 접근이 가능하여, 빈번하게 값을 찾아서 사용하는 경우 유용하게 사용할 수 있다. 다만, HashMap의 경우 저장된 값들을 순회하고자 할때 값을 넣은 순서가 아닌 무작위로 출력되게 된다. 이를 보완하고자 나온 것이 LinkedHashMap이다. LinkedHashMap은 doubly-linked list로 삽입한 값들을 관리한다. 그래서 삽입한 순서대로 값을 가져오고자할 때 사용할 수 있다. 아래는 LinkedHashMap과 HashMap에 들어간 값을 출력해보는 간단한 예제코드이다. public static void main(String[] args) throws Exception { LinkedHashMap link.. Java String + 연산에 대한 이해 1. 자바에서 +연산으로 문자열 연결 Java String 클래스는 + 연산으로 쉽게 두개의 스트링을 잇는 것이 가능하다. public static void main(String[] args) throws Exception { String a = "Hello, "; String b = "World!"; a = a + b; System.out.println(a); // 출력결과 : Hello, World! } 정말 편리하게 사용하고 있는 기능이다. 그런데, String 은 불변 객체라고 알고 있기에, 내부적으로 어떻게 동작하는지 궁금해진다. 객체를 새로 만들어서 두개 스트링을 복사해서 붙여넣는 것일까? 그렇다면 이 과정은 비효율적이지는 않을까? 라고 생각해 볼 수 있다. eclispe나 vscode에서 브.. 이전 1 2 다음