java volatile 2

[Java] 공유객체와 volatile 키워드

공유객체란 무엇일까? 공유객체는 하나의 객체를 여러 개의 Thread가 사용한다는 의미이다. volatile은 무엇일까? volatile은 해당 키워드로 선언된 변수를 컴파일러의 최적화 대상에서 제외시킨다는 의미이다. 그래서 값이 변경되는 즉시 변수에 적용시킨다. 그런데 하나의 Thread가 아닌 여러 Thread가 Write하는 상황에서는 적합하지 않다고 한다. Java에서 volatile은 Java 변수를 Main Memory에 저장하겠다는 것을 명시하는 키워드이다. 그래서 변수의 값을 읽을때 CPU 캐시에 저장된 값이 아니라 Main Memory에서 읽게 되는 것이다. 그리고 마찬가지로 변수의 값을 쓸때도 Main Memory에까지 작성하는 것이다. 왜 volatile 키워드가 필요할까? volat..

Java lang 2021.01.05

[Java] java 키워드 중 새로 배운것. assert, native, strictfp, volatile

자바 키워드를 나열해놓은 것을 따라 읽다가 처음 본게 있어서 적어본다. assert, native, strictfp, volatile 보통 널리 알려진 자바 기본 서적에서도 이걸 다루는 건 못봤다. 적어도 내가 읽은 책들에 한해서^^ native 같은 경우는 자바에서 다른 언어를 사용할 수 있게 만들어주는 키워드라고 한다. mommoo.tistory.com/71 여기에 진짜 잘 설명되어있음.. JVM은 만능이라고만 믿어왔는데, 운영체제에 깊게 접근하지 못해서 결국에는 운영체제에 깊은 접근이 가능한 언어를 사용하기 위해 JNI를 사용해서 native 키워드가 사용되는 것을 보면, 결국에 만능은 없는듯하다. JAVA - JNI 사용하기 오늘 포스팅은 Java JNI ( Java Native Interface..

Java lang 2020.12.12
반응형