일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 회귀
- 스포티파이
- spotify
- Spring
- MYSQL
- Spotify Api
- C++
- c
- 프로그래머스
- SWEA
- java
- SW Expert Academy
- regression
- python
- modern c++
- CS
- programmers
- SECS-II
- 백준
- Spring JPA
- SECS/GEM
- 자바
- linux
- spring boot
- Gem
- Computer Science
- Baekjoon
- 파이썬
- 회원가입
- SECS
Archives
- Today
- Total
비버놀로지
[JAVA] 쓰레드의 구현과 실행 본문
728x90
- 쓰레드는 일반적으로 Runnable 인터페이스를 구현하는 방법과 Thread 클래스를 상속받는 2가지 방법으로 만들 수 있다.
- Runnable 인터페이스의 구현
- 먼저 Runnable 인터페이스를 구현하는 방법부터 알아보자. Runnable에는 run() 메서드 하나가 존재하고 이 메서드를 오버라이딩 해서 필요한 내용을 작성한다. 일반적인 자바 프로세스의 출발점이 main() 메서드인데 반해 스레드의 출발점은 바로 이 run() 메서드이다.
public class Test03 implements Runnable{ //Runnable 매서드를 상속받는다.
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("temp thread start!!"); //수행할 작업을 적는다.
}
public static void main(String[] args) {
System.out.println("main thread start!!");
Test03 t= new Test03();
Thread thread=new Thread(t); //Test03은 쓰레드가 아닌 Runnable을 상속만 받은 것이기 때문에 쓰레드로 만들어 준다.
thread.start(); //실행은 run이 아닌 start로 한다!!
System.out.println("main thread finish");
}
}
- 출력값 확인하기!!
main thread start!!
main thread finish
temp thread start!!
- 위와 같이 main thread가 시작하고나서 temp쓰레드가 수행하고 main 쓰레드가 끝나는 구조가 아닌 동시에 작용하는 것을 알 수 있다. 그래서 메인 쓰레드가 끝이났다고 temp 쓰레드가 끝이 나는것이 아닌 둘 다 끝이 나야 실행이 끝이 난다. 그리고 만약에 메인 쓰레드에 딜레이를 줄 경우 temp가 중간에서 확인하게 할 수도 있다.
- Thread 클래스 상속
- Thread 클래스는 Runnable을 구현하고 있다. 따라서 별도로 Runnable 객체를 파라미터로 넣을 필요 없이 Thread 클래스만 가지고 스레드를 만들 수 있다.
public class Test04 extends Thread{ //쓰레드를 상속받는다.
public void run(){
System.out.println("쓰레드 실행!!"); //수행할 작업을 적는다.
}
public static void main(String[] args) throws InterruptedException {
System.out.println("메인 쓰레드 실행!!");
Test04 t=new Test04();
t.start(); //따로 쓰레드를 만들 필요없이 바로 시작!!
Thread.sleep(1000); //1초간 딜레이를 준다.
System.out.println("메인 쓰레드 종료!!");
}
}
메인 쓰레드 실행!!
쓰레드 실행!!
메인 쓰레드 종료!!
- 위와 같이 딜레이를 통해 순서대로 보여지게 할 수 있다. 하지만 임시방편일 뿐 동시에 작업하기 때문에 작업량이 커질 수록 결과값은 섞여서 나오게 된다.
728x90
'LANGUAGE STUDY > JAVA' 카테고리의 다른 글
[JAVA] JDBC의 Statement 와 Prepared Statement (0) | 2020.08.23 |
---|---|
[JAVA] JDBC의 개념과 구조 (0) | 2020.08.23 |
[JAVA] 프로세스와 쓰레드 (0) | 2020.08.23 |
[JAVA] StringBuilder 클래스 (0) | 2020.08.23 |
[JAVA] StringBuffer 클래스 (0) | 2020.08.23 |
Comments