Open Hchanghyeon opened 9 months ago
가시성 : 하나의 스레드에서 변경된 변수의 값을 다른 스레드에서 즉시 알수 있어야 한다. 하나의 스레드는 작업 이후 캐시를 사용하고 그 캐스를 읽어 사용하기때문에 메인 메모리와 동기화되지 않은 캐시 값을 읽을 수 있다.
volatile는 메인 메모리에 직접 접근해 변수 값이 변경되면 모든 스레드에게 변경된 값을 즉시 보장한다. 하지만 원자적 연산이나 스레드 상호 배제를 보장하지는 않는다. 동시성 문제를 완전히 해결해주지는 않음
blocking io : 입출력이 수행되는 동안 스레드는 대기상태에 있는다. (System.out.println은 blocking io)
non blockingn io : 입출력 작업을 수행하는 동안 호출자 스레드가 블록되지 않고 다른 작업을 수행하도록 한다.
String a = ""
과 String a = new String("")
의 차이점을 설명해주세요.[추가 질문]
String a = ""
vsString a = new String("")