Java 2

[Java]_Thread start()와 run()

Java의 정석 3판 쓰레드 실행시킬 때 왜 run()이 아닌 start()를 호출할까? main 메소드에서 run()을 호출하는 것은 쓰레드를 실행하는 게 아니라, 단순히 클래스에 선언된 메소드를 호출하는 것이다. start()는 새로운 쓰레드가 작업을 실행하기 위해 필요한 호출스택(call stack)을 만든 다음, run()을 호출해서 만든 호출스택에 run()을 맨 처음으로 올라가게 한다. 새로운 쓰레드를 생성하고 실행시킬 때마다 새로운 호출스택이 생성되고, 쓰레드가 종료되면 호출스택은 소멸된다. 1. main 메소드에서 쓰레드의 start() 호출 2. start() 새로운 쓰레드를 생성하고, 호출스택을 생성 3. 생성된 호출스택에 run()이 호출되고, 쓰레드가 독립적인 공간에서 작업 수행 4..

Java 2021.03.22

[Java]_Thread 쓰레드

프로세스(Process)란? -실행 중인 프로그램(Program) -프로그램을 실행하면 OS로부터 자원(메모리)을 할당받아서 프로세스가 된다. 쓰레드(Thread)란? -프로세스의 자원을 이용해서 실제로 작업을 수행하는 것 대부분의 OS는 멀티태스킹을 지원한다-> 여러 개의 프로세스 동시에 실행 가능 CPU의 코어는 단 한 개의 작업만 수행할 수 있기 때문에 실제로 동시에 처리되는 작업의 개수는 코어의 개수와 같다. (각 코어가 아주 짧은 시간 동안 여러 작업을 번갈아 가면서 수행) 멀티쓰레드의 장점 -CPU 사용률 향상 -자원 효율적으로 사용 -사용자에 대한 응답성 향상 -작업 분리로 코드 간결 멀티쓰레드 => 우리가 메신저에서 사진을 다운받으면서 채팅을 할 수 있는 이유 쓰레드 구현 -Runnable..

Java 2021.03.22