Skip to content
himprover
GitHubVelog

[번역] JavaScript의 단일 스레드 특성 이해

Translate, JavaScript6 min read

banner

이 게시물은 원본 아티클인 Understanding JavaScript's Single-Threaded Nature 를 한글로 번역한 게시글입니다. 게시물 내용의 저작권은 원작자 Roktim Kamal Senapoty 에게 있습니다.

JavaScript는 상호작용 웹 어플리케이션을 만드는 인기있는 프로그래밍 언어 입니다. JavaScript와 다른 프로그래밍 언어의 주요한 차이점 중 하나는 JavaScript의 단일 스레드 특성 입니다.

좀 더 자세히 알아보시죠.🚀

JavaScript가 단일 스레드라는게 무슨 뜻인가요?

기본적으로 이는 JavaScript가 한번에 하나의 명령어 시퀀스만 실행할 수 있음을 의미합니다. 다른 프로그래밍 언어는 여러 개의 스레드가 동시에 실행 될 수 있고, 각각이 자체적인 명령어 시퀀스를 실행 할 수 있지만, JavaScript는 이를 지원하지 않습니다.

2

JavaScript가 왜 단일 스레드를 사용했는지 이해하려면, 웹 브라우저가 어떻게 구현했는지 먼저 알아야 합니다. 전형적인 웹 어플리케이션은 브라우저의 JavaScript 엔진으로 JavaScript 코드를 실행합니다. JavaScript 엔진은 JavaScript 코드를 해석하고 실행하는 역할을 담당하는 구성 요소입니다.

많은 웹 브라우저가 하나의 JavaScript 엔진으로 페이지의 모든 JavaScript 코드를 실행시킵니다. 이는 여러 개의 JavaScript 함수가 동시에 호출되면, 동시에 실행되지 않고 하나 하나 실행될 것 입니다.

JavaScript가 이렇게 설계된 이유는 웹 환경을 염두에 둔 것입니다. 웹 환경에서는 하나의 페이지에서 여러 개의 다른 스크립트가 동시에 구동 될 수 있어야 합니다. JavaScript가 다중 스레드를 사용한다면, 예측 불가능한 동작이나 다른 스크립트 간의 충돌이 날 가능성이 있습니다.

3

예제를 통해 알아볼까요?

4

고속도로 비유를 사용해 이 개념을 더자세히 설명할 수 있습니다. JavaScript 엔진이 하나의 차선을 가진 고속도로라고 상상해보세요. 여기서 각각의 차들은 실행이 필요한 작업을 나타냅니다. 다중 스레드 환경에서는 차선이 여러개고, 이는 동시에 여러 개의 차(작업)가 실행 될 수 있음을 의미합니다. 하지만 싱글 스레드 환경에서는 차선이 하나이기 때문에, 이전 작업이 실행되어 완료되기 전까지 기다려야 함을 의미합니다.

JavaScript의 단일 스레드 특성이 웹 개발자에게 미치는 영향은 무엇인가요?

가장 중요한 결과는 같은 페이지 내에서 오랜 시간이 소요되는 함수가 다른 코드의 실행을 막을 수 있다는 것입니다.

예를들어, 실행이 오래걸리는 JavaScript 함수를 웹 페이지에 불러왔다고 생각해보세요. 이 함수는 복잡한 계산을 수행하거나, 원격 서버에서 많은 양의 데이터를 불러옵니다. 함수가 실행되는 동안 같은 페이지의 다른 함수들은 실행될 수 없고, 느리게 읽어지며, 사용자 경험을 저하시킬 것입니다.

5

이 문제를 완화시키기 위해 웹 개발자들은 종종 비동기 프로그래밍 같은 기술을 사용해 오랜 시간 걸리는 JavaScript 함수가 다른 코드의 실행을 막지 않도록 했습니다. 비동기 프로그래밍은 네트워크 요청이나, 파일 읽기 같은 긴 작업이 완료되기 까지 기다리지 않고 JavaScript 함수가 계속 실행될 수 있도록 합니다.

결론

JavaScript 단일 스레드의 특징은 웹 개발자가 알아야 하는 언어의 중요한 특성입니다. 특정 시나리오에서는 성능 문제를 초래할 수 있지만, 이러한 문제를 완화하고 웹 어플리케이션이 반응성을 유지하고 성능을 발휘할 수 있도록 하는 기술들이 있습니다.