출처: [병렬프로그래밍] 자바 병렬 프로그래밍 소개
스레드 사용 안전성 위해 요소
UnsafeSequence는 비표준 어노테이션인 @NotThreadSafe를 사용.(@ThreadSafe와 @Immutable도 존재)
@Immutable은 해당 클래스가 불변 클래스임을 나타내기 때문에 ThreadSafe 만약 @ThreadSafe라고 표시하면 클래스를 사용하는 사람은 멀티스레드 환경에서 문제가 없다는 점을 명확히 알 수 있고, 스레드 안전성이 계속 보장돼야 한다는 점에 주의할 수 있다.
스레드는 같은 메모리 주소 공간을 공유하고 동시에 실행되기 때문에 다른 스레드가 사용 중일지도 모르는 변수를 읽거나 수정할 수도 있다.
Nodejs 스레드 자바스크립트 코드가 실행될 때 보다, IO 이벤트가 발생할 때 까지 기다리는 시간이 훨씬 더 많다.
node index.js 한 후,
lsof -i:[사용하는 포트 번호]
ex) lsof -i:3000 하면 해당 프로세스의 pId를 확인할 수 있다.
ps -M [pId] -> 스레드의 개수를 확인 가능
1 2 3 4 5 6 7 8 9 10 11 12 USER PID TT %CPU STAT PRI STIME UTIME COMMAND we 43531 s003 0.0 S 31T 0:00.
출처 자바스크립트 변수 선언 방식 차이: var/let/const TDZ(Temporal Dead Zone)이란? Hoisting and TDZ
Javascript 변수 var, let, const & TDZ(Temporal Dead Zone) 오늘은 기초적인 var, let, const에 대한 차이를 알아보았다 일단 변수 선언의 3단계는 선언 -> 초기화 -> 할당 과정으로 이루어져 있다.
선언: 변수를 실행 context의 변수 객체에 등록하는 단계. 해당 변수 객체는 scope가 참조하는 대상이 됨 \n 초기화: 선언 단계의 변수를 위한 메모리를 만드는 단계. 할당된 메모리에는 undefined로 초기화 \n 할당: undefined로 초기화된 메모리의 다른 값을 할당 \n
출처: https://velog.io/@dongha1992/javascript-%EB%82%B4%EB%B6%80%ED%95%A8%EC%88%98-%EC%99%B8%EB%B6%80%ED%95%A8%EC%88%98
자바스크립트 기초 지식 쌓기 아래의 코드가 있다고 가정하자.
-- 1 2 3 4 5 6 7 8 9 function out(){ const name = "aaa" return function(){ console.log(name); } } const in = out() in() 함수 안에 함수가 있을 때 응집성이 높아진다. 위의 코드를 보면 out()은 외부함수, in()은 내부함수를 말한다. in()함수에서 name에 대한 로그를 찍는데, name은 out()에만 있기 대문에 외부 함수에서 변수를 찾는다. 이를 closure라고 한다.