스레드는 작업의 단위, 프로세스 내에서 기생하는 프로세스
자바는 객체지향이다
플랫폼 독립적이고 JVM에 의존적이다
스레드 언어로서 멀티스레드 지향 언어(프로세스 기반과 대비)
> 이러한 특징으로부터 웹 중심으로 자바 성장(스레드 풀)
기존의 웹에서 프로세스 중심으로 처리하면 서버에서 객체 1000개 생성 등 소모 지나침
우리는 스레드에 대한 이해는 필요하다(직접적으로 프로그래밍할 일 많지 않음)
Java는 두 가지 방법을 통해 스레드 생성 가능(Thread Class 상속, Runnable 인터페이스)
Thread를 상속하는 것 보다는 Runnable이 자주 쓰임(단일 상속이기에 중요한 다른 class 상속하기 위해)
cf. callback 함수: 호출을 명시하지 않는 함수
package com.sinc.intern.thread;
public class SincThread implements Runnable{
// callback 함수
@Override
public void run() {
// TODO Auto-generated method stub
for(int idx = 0 ; idx < 26 ; idx++) {
System.out.print((char)('A' + idx));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
import com.sinc.intern.thread.SincThread;
public class ThreadMain {
public static void main(String[] args) {
System.out.println("main start");
// 객체 생성(아직까지 스레드가 아닌 스레드의 대상)
SincThread runnable = new SincThread();
Thread thread = new Thread(runnable);
thread.start();
System.out.println("main end");
}
}
Thread에서 주의해야할 부분
- DeadLock(non-Shareable 한 대상을 대상으로)
- 왕자 없는 백설공주 주의
'Archived(CSE Programming) > Java' 카테고리의 다른 글
Java_Stream (0) | 2020.01.17 |
---|---|
Java_예외처리 (0) | 2020.01.17 |
Java_다형성과 컬렉션 (0) | 2020.01.16 |
Java_OOP와 다형성 (0) | 2020.01.14 |
Java_자바의 기본 (0) | 2020.01.13 |