바르고 뜨겁게

Javascript 싱글 스레드 눈으로 확인하기. 본문

자바스크립트

Javascript 싱글 스레드 눈으로 확인하기.

RightHot 2020. 11. 3. 21:52

Javascript 싱글 스레드 눈으로 확인하기.

자바스크립트는 자바와는 다르게 싱글 스레드라고 한다.

한번에 하나의 작업만 수행할 수 있음에도 불구하고 비동기, 논블로킹등을 지원하기에 실제 코드상 눈으로 확인하긴 어렵다.

따라서 아래 자바와의 비교를 코드를 통해 싱글 스레드를 눈으로 확인해보겠다.

잘못 된 정보가 있다면 댓글로 알려주길 바랍니다!

JAVA

 public class NoSyncDataMain {
     public static Data data = new Data();


     public static void main(String[] args) {
         System.out.println("main 시작");
         Tom t = new Tom();
         Jane j = new Jane();
         t.start();
         j.start();
         System.out.println("main 종료");
    }
 }


 class Tom extends Thread {
     public void run() {
         for (int i = 0; i < 1000000; i ++) {
             NoSyncDataMain.data.i ++;
        }
         System.out.println("Tom : " + NoSyncDataMain.data.i);
    }
 }


 class Jane extends Thread {
     public void run() {
         for (int i = 0; i < 1000000; i ++) {
             NoSyncDataMain.data.i ++;
        }
         System.out.println("Jane : " + NoSyncDataMain.data.i);
    }
 }


 class Data {
     public int i = 0;
 }



Javascript

 let mCnt = 0;
 
 console.log("main 시작")
 
 new Promise((resolve, reject) => {
     for (let i = 0; i < 1000000; i++) {
         mCnt = mCnt + 1;
    }
     resolve()
 }).then((resData) => {
     console.log("Tom : " + mCnt)
 });
 
 new Promise((resolve, reject) => {
     for (let i = 0; i < 2000000; i++) {
         mCnt = mCnt + 1;
    }
     resolve()
 }).then((resData) => {
     console.log("Jane : " + mCnt)
 });
 
 console.log("main 종료")


온라인 코드실행기 : https://hashcode.co.kr/code_runners?language=javascript

Comments