JAVA/μ•Œμ•„λ‘λ©΄ 쒋을 지식

[JAVA] μŠ€λ ˆλ“œμ˜ 싀행은 μ™œ start()일까?

육볡 2020. 4. 1. 01:57

λ©€ν‹°μŠ€λ ˆλ”©


λ©€ν‹°ν…ŒμŠ€ν‚Ήμ΄λž€? 

μ‹€μ œ 처리될 수 μžˆλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ 수 = CPU μ½”μ–΄μ˜ 개수 
CPU μ½”μ–΄μ˜ κ°œμˆ˜λ³΄λ‹€ λ§Žμ€ ν”„λ‘œμ„ΈμŠ€κ°€ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— λͺ¨λ‘ ν•¨κ»˜ λ™μ‹œμ— μ²˜λ¦¬ν•  수 μ—†μŒ 
각 코어듀은 μ•„μ£Ό 짧은 μ‹œκ°„λ™μ•ˆ μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ²ˆκ°ˆμ•„κ°€λ©° μ²˜λ¦¬ν•˜μ—¬ λˆˆμ†μž„μ„ 톡해 λ™μ‹œμ— λ™μž‘ν•˜λŠ” κ²ƒμ²˜λŸΌ 보이게 ν•˜λŠ” 것 

λ©€ν‹°μŠ€λ ˆλ”©μ΄λž€? 

λ©€ν‹°ν…ŒμŠ€ν‚Ήκ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ μ•ˆμ— μ—¬λŸ¬κ°œμ˜ μŠ€λ ˆλ“œκ°€ λ™μ‹œμ— ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것을 의미
μŠ€λ ˆλ“œλŠ” ν•˜λ‚˜μ˜ μž‘μ—… λ‹¨μœ„μ΄λ‹€

 

μ™œ start()일까?


의문점

보톡 μžλ°”μ—μ„œ μŠ€λ ˆλ“œλ₯Ό κ΅¬ν˜„ν•  λ•Œ run() λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ“œν•˜μ—¬ μŠ€λ ˆλ“œκ°€ μˆ˜ν–‰ν•  λ‘œμ§μ„ μž‘μ„±ν•¨ 
근데 μ™œ μŠ€λ ˆλ“œμ˜ 싀행은 run() 호좜이 μ•„λ‹Œ, start() 호좜일까? 

 

λ§Œμ•½μ— run()을 ν˜ΈμΆœν•˜λ©΄ μŠ€λ ˆλ“œκ°€ λ™μž‘ν•˜μ§€ μ•Šμ„κΉŒ? 

  • μ•„λ‹ˆλ‹€. λΆ„λͺ…νžˆ λ™μž‘ν•¨! 근데, run() 호좜둜 μŠ€λ ˆλ“œλ₯Ό λ™μž‘μ‹œν‚€λŠ” 것은 μ˜λ―Έμ—†λŠ” ν–‰μœ„μ΄λ‹€ 

 

μ˜λ―Έμ—†λŠ” ν–‰μœ„?

  • Javaμ—λŠ” 콜 μŠ€νƒμ΄ μžˆλ‹€. 

콜 μŠ€νƒμ€ μ‹€μ§ˆμ μΈ λͺ…령어듀을 λ‹΄κ³  μžˆλŠ” λ©”λͺ¨λ¦¬λ‘œ, ν•˜λ‚˜μ”© κΊΌλ‚΄μ„œ μ‹€ν–‰μ‹œν‚€λŠ” 역할을 ν•˜κ²Œ λœλ‹€. λ”°λΌμ„œ λ§Œμ•½ λ™μ‹œμ— 두 κ°€μ§€ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€λ©΄ μ½œμŠ€νƒμ΄ λ‘κ°œκ°€ ν•„μš”ν•˜λ‹€! μŠ€λ ˆλ“œλ₯Ό μ—¬λŸ¬κ°œ μ΄μš©ν•œλ‹€λŠ” 것은 JVM이 λ‹€μˆ˜μ˜ 콜 μŠ€νƒμ„ λ²ˆκ°ˆμ•„κ°€λ©° μ²˜λ¦¬ν•˜κ³  λ™μ‹œμ— λ™μž‘ν•˜λŠ” κ²ƒμ²˜λŸΌ λˆˆμ†μž„μ„ ν•˜λŠ” 것이닀. 

 

  • run() ν˜ΈμΆœμ€ 콜 μŠ€νƒμ„ μƒμ„±ν•˜μ§€ μ•ŠλŠ”λ‹€.

그런데 μ—¬κΈ°μ„œ run() ν˜ΈμΆœμ„ ν•˜μ—¬ μŠ€λ ˆλ“œλ₯Ό λ™μž‘μ‹œν‚€κ²Œ λœλ‹€λ©΄ 콜 μŠ€νƒμ΄ μƒμ„±λ˜μ§€ μ•Šκ³  main()의 콜 μŠ€νƒμ„ κ³΅μœ ν•˜κ²Œ λœλ‹€!  run() ν˜ΈμΆœμ„ ν•˜μ—¬ μŠ€λ ˆλ“œλ₯Ό λ™μž‘μ‹œν‚€λŠ” 것은 μŠ€λ ˆλ“œμ˜ μž₯점을 살릴 수 μ—†λŠ” 것이닀. λ°˜λ©΄μ— start()λ₯Ό ν˜ΈμΆœν•˜κ²Œ 되면, JVMλŠ” μ•Œμ•„μ„œ 콜 μŠ€νƒμ„ μƒˆλ‘œ λ§Œλ“€μ–΄μ£Όκ³  context switching을 톡해 λ™μ‹œμ— λ™μž‘ν•˜λŠ” κ²ƒμ²˜λŸΌ 보이게 ν•œλ‹€.

 

  • start()λ₯Ό μ‚¬μš©ν•˜μž

결둠은 start()λ₯Ό ν˜ΈμΆœν•˜λ©΄ λ‚΄λΆ€μ μœΌλ‘œ 콜 μŠ€νƒμ„ μƒμ„±ν•˜κ³  run()을 μžλ™μ μœΌλ‘œ ν˜ΈμΆœν•œλ‹€

 

Reference

https://github.com/gyoogle/tech-interview-for-developer

 

gyoogle/tech-interview-for-developer

πŸ‘ΆπŸ» μ‹ μž… 개발자 전곡 지식 & 기술 λ©΄μ ‘ 백과사전 πŸ“–. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com