- daemon
- 백그라운드에서 실행되고 있는 프로그램
- 프로그램(Program)
- 디스크에 설치되어 있는 실행되기 전 상태의 소프트웨어
- 프로세스(Process)
- 설치된 프로그램을 실행하여 메모리에 로딩된 상태(=실행중인 프로그램)
- 자원(resource)와 쓰레드로 구성
- 멀티태스킹(Multi Tasking)
- 프로세스가 여러개 일 때 해당 프로세스들이 동시에 수행되는 것 (정확히는 cpu가 빠른 속도로 프로세스들을 번갈아가면서 수행)
- 예를들어 동영상을 재생하면서 웹페이지 표시, 음악 재생하는 것
- 쓰레드(thread)
- 프로세스 내에서 작업의 최소 단위
- 프로세스 내에서 실제 작업의 수
- 하나의 프로세스 내에는 최소 한 개의 쓰레드가 동작함(=Single Thread) => 동시에 수행 가능한 작업은 단 한개 뿐이다.
- 쓰레드가 많을수록 작업량이 많다.
- 가지고 있는 자원만큼 쓰레드를 가질 수 있음(한계가 있다)
- 하나의 프로세스 내에서 동시에 수행 가능한 작업을 늘리려면 멀티 쓰레드(Multi Thread)로 구현해야한다! ex) 메신저 내에서 파일 전송과 동시에 메세지 송, 수신 하는 것
- 하나의 새로운 프로세스를 실행하는 것보다 하나의 새로운 쓰레드를 생성하는 것이 더 적은 비용이 듦
- 톰캣 = was 프로그램 톰캣은 쓰레드로 작동한다.
class NoThread {
String name;
int count;
//alt shift o
public NoThread(String name, int count) {
super();
this.name = name;
this.count = count;
}
public void run() {
for(int i=1;i<=count;i++) {
System.out.println(name+": "+i);
}
}
}
NoThread nt1 = new NoThread("★A작업★", 1000000);
NoThread nt2 = new NoThread("◎B작업◎", 500000);
NoThread nt3 = new NoThread("♤C작업♤", 1000000);
nt1.run(); // a작업이 100만번 실행이 끝나면
nt2.run(); // b작업이 실행되고, b작업 50먼번 실행이 끝나면
nt3.run(); // c작업이 실행됨
//=> 일반적인 프로그램은 싱글쓰레드(Single Thread)이며,
// 앞의 코드가 실행이 끝나야만 다음 코드가 실행된다.
} //main()
} //class
'JAVA' 카테고리의 다른 글
[JAVA] 싱글쓰레드로 동작하는 프로그램 (0) | 2023.11.28 |
---|---|
[JAVA] 멀티쓰레딩(Multi Threading) (0) | 2023.11.28 |
[JAVA] 람다식 응용 (0) | 2023.11.15 |
[JAVA] 함수형 인터페이스(functional interface) 또는 타겟타입(target type) (0) | 2023.11.15 |
[JAVA] 익명 객체를 생성하는 람다식 (1) | 2023.11.15 |