java

쉽지만 어려운 #Java #자바 #성공적 5.멀티 스레드

sieunju 2016. 5. 3. 15:49
반응형

안녕하세요 j.sieun 입니다. 

요번에 배우실 내용은 멀티 스레드 입니다. 

처음에 이것을 배울 때에는 이해가 잘되지 않지만 몇번 연습하다보면 어떻게 되는지 알게 되고 응용 문제도 잘풀거라 

예상이 됩니다. 그럼 개념부터 보겠습니다. 

스레드란??

스레드(thread) : 프로그램의 실행 흐름을 말합니다. 

스레드에도 종류가 몇가지 있습니다. 

1. 싱글스레드(single thread program) : 스레드가 하나뿐 인 프로그램

2.멀티 스레드 프로그램(multithread program) : 스레드가 둘 이상인 프로그램

이렇게 2가지가 있습니다. 

거의 대부분 싱글 스레드는 사용을 잘안하고 멀티스레드를 주로 많이 사용합니다. 


작동방식을 보도록 하겠습니다. 



우선 왼쪽에 있는 것은 싱글 스레드를 말하는것이고 오른쪽에 있는것은 멀티 스레드를 말하는 것입니다. 


그럼 바로 소스를 보도록 하겠습니다. 



public class ThreadClass{

public static void main(String[] args) {

// TODO Auto-generated method stub

Thread thread = new TThread(); //스레드 생성

thread.start(); //스레드 시작

}

}

class TThread extends Thread{

public void run() {

for(int i=0; i<10; i++)

{

System.out.println("스레드:"+i);

try{

Thread.sleep(1000); //1초간격으로 작업 수행

} catch(InterruptedException e) {

System.out.println(e.getMessage());

}

}

}

}

기본적으로 싱글 스레드를 만들어 보았습니다. 

보시면 처음본 try/catch와 extends 라고 하는 상속이 있습니다.

차차 배우시게 될텐데 미리 알고있으면 편합니다. 


소스해석 해보겠습니다. 

우선  ThreadClass 안에 메인 함수를 찾습니다. (public static void main() 이거입니다. ;

거기안에  

Thread thread = new TThread(); //스레드 생성

thread.start(); //스레드 시작

이 문장이 있습니다. 주석 대로 스레드를 생성하고 그 스레드를 시작합니다. 

근데 그 스레드가 어떤 스레드인지 알아야 하는데요. 그 스레드는

아래 class TThread extends Thread{

이것을 말합니다. 제가 그냥 new Thread() 라고 했으면 햇갈려하실거 같아서 앞에 TThread 라고 구분 지었습니다.

TThread 클래스 안에 run함수를 실행합니다. 그리고 

Thread.sleep(1000); //1초간격으로 작업 수행

이것을 실행함으로 1초마다 쓰레드 : i 값이 출력이 됩니다. 

한번 이것을 보시고 소스를 이해 하시면 여러개의 스레드를 만들어서 자기가 원할때 스레드를 start할수있고 stop 을 할수가 있습니다. 


다음에는 다중스레드& 이것을 이용한 예제를 풀어보도록 하겠습니다. 


감사합니다.

※궁금하신거 댓글달아주시길 바랍니다. ㅎㅎ


퍼가시는건 상관 없는데 말은 하고 퍼가주시길 바랍니다.^^※



반응형