Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프로토콜역할
- 자바
- N+1문제
- 테스트케이스
- selenium
- 자동화워크플로우
- jwt토큰
- 오버로딩
- 부트캠프
- 한화시스템부트캠프
- 헥사고날아키텍처
- 스프링시큐리티
- STOMP
- kafka배포
- nplus1
- 메소드
- XSS
- Kafka
- 자료구조
- 캐시의 작동 원리
- springboot
- 프로세스와스레드의차이
- Java
- QA
- 하이브리드접근법
- 티스토리챌린지
- 엘라스틱서치
- JPA
- 오블완
- n8n
Archives
- Today
- Total
아쿠의 개발 일지
[Thread] Thread 기본 본문
Thread란?
프로세스 안에서 실질적으로 작업을 실행하는 단위를 말하고, 프로세스에는 적어도 한 개 이상의 스레드가 있다고 한다. Main 스레드 하나로 시작하여 추가 생성하게 되면 멀티 스레드 환경이 된다.
이러한 스레드들은 프로세스의 리소스를 공유하기 때문에 효율적이긴 하지만 개발자들에겐 문제가 많다고 한다.
일단 대충 연습을 해 보기 위해서 Ex001이라는 예제 Class를 만들었다.
그러곤 Thread1과 Thread2를 만들어서 Thread1은 Thread를 상속 받게 해 주고
Thread2는 인터페이스로 구현하기 위해 Runnable을 쓸 것이다.
Runnable은 시간 메소드를 구현 해야 에러가 나지 않는다.
public class Thread1 extends Thread{
// 얘는 상속 받은 거
@Override
public void run() {
// 무한 반복문을 일단 만들어줌
while (true) {
System.out.println("스레드 01");
}
}
}
run이라는 메소드를 override해서 구현을 할 거다 컨트롤+o해서 고르면 된다.
public class Thread2 implements Runnable{
// 얘는 인터페이스로 구현
// 시간 메소드 구현 안 해서 에러나는 거임
@Override
public void run() {
while (true){
System.out.println("스레드 02");
}
}
}
이렇게 Thread1과 Thread2를 만들어두고, 이제 만들어준 Ex001로 간다.
이 친구들을 Thread로 만들어 놓으면 실행 했을 때 여러가지 작업을 동시에 할 수 있다.
public class Ex001 {
public static void main(String[] args) {
// 쓰레드를 만드는 방법
Thread1 t01 = new Thread1();
// 클래스 이름 변수 이름 = Thread1이라는 객체 생성
Runnable r02 = new Thread2();
Thread t02 = new Thread(r02);
t02.start();
t01.start();
while (true){
System.out.println("메인");
}
}
}
실행을 해 보면 계속 왔다갔다 출력을 한다. 둘다 무한 반복이 돌아가고 있기 때문에 멈출 생각을 안 한다.
최대한 안 겹치는 거 찾느라 힘들었다. 이렇게 되는 거다.
728x90
'Programming > Java' 카테고리의 다른 글
[SpringBoot] Entity간의 관계 설정 (3) | 2024.06.23 |
---|---|
[SpringBoot] RestController (0) | 2024.06.23 |
[Method] method overloading 기본(2) (0) | 2024.06.22 |
[Method] method Overloading 기본 (0) | 2024.06.22 |
[Socket] 소켓 통신의 기본 (2) | 2024.06.06 |