일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 자바 백준 팩토리얼 개수
- java 파티
- mongodb lookup
- 백준 1504 java
- java 백준 1509
- kotiln const val
- ipfs singletone
- spring mongodb
- 익명 객체 @transactional
- spring mongoTemplate switch
- java 1238
- 백준 2252 줄세우기
- go
- kotiln functional interface
- spring mongodb switch
- 전략 패턴이란
- 안정해시
- 백준 연결요소 자바
- spring mongoTemplate
- Spring ipfs
- 자바 1676
- 백준 특정한 최단 경로
- kotiln const
- Java Call By Refernce
- javav 1676
- rabbitmq 싱글톤
- java 1509
- java 팩토리얼 개수
- ipfs bean
- nodejs rabbitmq
Archives
- Today
- Total
공부 흔적남기기
JAVA 자바 프로세스와 쓰레드 본문
728x90
반응형
프로세스란?
프로세스는 어플리케이션을 실행시키면 생기는 것으로, OS로 부터 필요한 자원을 할당 받아 프로세스가 된다.
프로세스는 OS로 부터 할당 받은 자원을 이용해 쓰레드를 통해 어플리케이션을 동작시킨다.
즉 모든 프로세스는 하나이상의 쓰레드가 존재하며 쓰레드가 두개 이상인 것을 멀티쓰레드라고 한다.
쓰레드란?
위에서 언급했다시피 프로세스 내부에서 실제로 어플리케이션 행위를 하는 것이 쓰레드이다.
멀티쓰레드를 사용하게 되면 CPU사용률 향상, 자원 효율성 향상, 사용자의 응답성 향상 등 많은 장점이 있지만 교착상태, 동기화 등 문제가 생길 수 있기 때문에 주의가 필요하다.
package spring.advanced;
public class MyRunnableThread {
Runnable myRunnable = new MyRunnable();
Thread myThread = new MyThread();
public void start(){
myThread.start();
Thread myRunnableThread = new Thread(myRunnable);
myRunnableThread.start();
}
}
class MyRunnable implements Runnable{
@Override
public void run() {
for(int i =0; i<5; i++){
System.out.println(Thread.currentThread().getName());
}
}
}
class MyThread extends Thread {
@Override
public void run() {
for(int i =0; i<5; i++){
System.out.println(getName());
}
}
}
다음과 같이 자바에서 쓰레드를 생성할 수 있는데 interface를 사용하면 더 객체지향적인 코드를 작성할 수 있기 때문에 Runnbable 을 사용하는 것이 일반적이다.
thread를 start한다고해서 바로 시작되는 것이 아니고 대기상태에 있다 자신의 순서가 되면 쓰레드를 시작하게 된다. 각 쓰레드는 단 한번만 실행가능하며 다시 실행시키기 위해선 새롭게 객체를 할당해서 실행해야한다.
728x90
반응형
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java Call by Value ? Call by Reference? (0) | 2023.11.29 |
---|---|
JAVA 자바 ThreadLocal 쓰레드 로컬이란 (0) | 2023.05.16 |
JAVA 자바 기본적인 배경지식 (0) | 2023.05.09 |
java string 문자열 뒤집기 reverse하기 (0) | 2022.01.15 |
java ArrayList.contains 헷갈리는 부분 (0) | 2022.01.15 |