프로세스와 쓰레드
- Process
-> 실행중인 프로그램
=> ex) word, 스타크래프트
Thread
-> 프로세스 내부에서 실행되는 일련의 작업
=> ex) save or print, SCV or Hydra
자바의 Thread란?
-> 실행중인 프로그램 내의 순차적 제어흐름들
-> 자바 프로그램
=> main 쓰레드가 main() 함수 수행
=> finalize 쓰레드가 finalize() 함수 수행
-> 다중 쓰레드 프로그램
=> 동시에(concurrently) 여러 가지 작업을 할 수 있음
-> 이점
=> 실행속도
=> 빠른 반응 시간
=> 동시성을 갚는 프로그램을 쉽게 작성
-> 다중 프로세스와 다중 쓰레드
=> 성능과 크기
=> 통신의 효율성
Thrad의 상태
- 쓰레드의 생성
-> 쓰레드의 시작
- Runnable
-> 쓰레드가 활동 가능한 상태
=> 실행 Queue : 실제로 CPU를 점유한 하나의 쓰레드 만이 존재
=> 실행 대기 Queue : CPU를 점유하기 위해 실행 대기 중인 Runnable 상태의 여러 쓰레드가 존재
- Not Runnable
-> 쓰레드의 활동이 불가능한 상태
- Dead
-> 쓰레드의 종료
Thread 생성
-> Thread 상속
=> 쓰레드 생성 -> start() -> run()
=> run()은 반드시 재정의해야함.
=> Thread클래스의 멤버 사용가능
==================================================================================================================
class NewThread extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
}
}
public class NewThreadMain {
public static void main(String[] args) {
NewThread n = new NewThread(); // 쓰레드의 생성
n.start(); // 쓰레드의 시작
System.out.println("n.getName() : " + n.getName());
n.setName("쓰레드래!");
System.out.println("n.getName() : " + n.getName());
try{
Thread.sleep(2000);
System.out.println(n.toString());
}catch (Exception e) {
// TODO: handle exception
}
}
}
Runnable 구현
- Runnable 인터페이스 구현
-> run()을 반드시 재정의
-> Thread 클래스의 멤버들을 사용하지 못함
-> 단, sleep()은 static이기 때문에 사용가능
==================================================================================================================
class SoloRunnable implements Runnable{
private int number = 0;
public SoloRunnable(int n) {
// TODO Auto-generated constructor stub
System.out.println(":쓰레드 시작");
number = n;
}
@Override
public void run() {
// TODO Auto-generated method stub
int i = 0;
while(i < number){
System.out.print(i + "\t");
i++;
}
System.out.println(":쓰레드 종료");
}
}
public class SoloRunnableMain{
public static void main(String[] args) {
new Thread(new SoloRunnable(10)).start();
}
}
==================================================================================================================
'프로그래밍 정리 > 자바' 카테고리의 다른 글
Thread Join - 쓰레드가 작동할 경우 끝날 때까지 기다려주고 다음 명령문을 실행. (0) | 2013.07.09 |
---|---|
Runnable, NotRunnable, Dead (0) | 2013.07.07 |
인터페이스에서 사용할 수 있는 멤버 변수 (0) | 2013.06.19 |
일반적인 인터페이스의 구조 (0) | 2013.06.19 |
인터페이스란? (0) | 2013.06.19 |