java

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

sieunju 2016. 5. 6. 02:20
반응형

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

저번시간에는 단일 스레드를 배웠다면 요번에 배우실 내용은 다중스레드입니다. 




단일과 다중의 차이는 그냥 스레드가 1개에서 여러개로 바뀌고 좀더 복잡한 구조로 발생하는 것 뿐입니다. 

너무 어렵게 생각 안하셔도 됩니다. 

다중스레드로 쓰이는 곳은 다양합니다.  그중 하나는 여러가지 작업을 동시 다발적으로 할수가 

있다는 장점이 있습니다.


그럼 바로 간단한 예제를 보겠습니다. 


public class ThreadClass{

public static void main(String[] args) {

// TODO Auto-generated method stub

Thread thread = new CharThread();

Thread thread1 = new NumThread();

thread1.start();

thread.start();

}

}

class NumThread extends Thread{

public void run() {

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

{

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

try{

Thread.sleep(500);

} catch(InterruptedException e) {

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

}

}

}

}

class CharThread extends Thread{

public void run() {

for(char i='A'; i<'Z'; i++)

{

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

try{

Thread.sleep(1000);

} catch(InterruptedException e) {

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

}

}

}

}


기본적인 다중스레드 형식입니다. 

숫자 스레드 같은 경우에는 0.5초마다 실행이 되고, 문자형 스레드는 1초마다 실행이 되도록 하였습니다. 


그래서 결과 값은.


이렇게 출력이 됩니다. 


그렇다면 여기서 try/catch 에 대해서 의문점이 들텐데요 저게 어떤 함수인지..궁금하신데요 


간단히 말해서 예외처리 함수입니다. 


try 안에는 예외 발생 가능성있는 문장을..(출력하고싶은 내용이나 실행하고싶은것들)


Catch 안에는 try 에서 에러가 발생할 경우 대처할  문장을 적습니다. (대부분 getMessage()라고 적습니다.)


쓰레드에서 타이머기능을 넣고싶으면  sleep 을 사용하는데 그 sleep을 사용하기 위해선 예외 처리 함수를 사용해야


됩니다. 그래서 예외 처리 함수를 적었습니다.


여기서 좀더 응용을 하시면 스레드 메소드 중에 .stop이라고 start가 스레드 스타트라면 stop은 중지입니다. 


간다하게 스레드를 실행했다가 어느 값이 도달하면 stop하도록 설정 하는 연습도 나쁘지 않습니다. 


이상 단일 스레드와 다중스레드에 대해 알아보았습니다. 


다음 시간에는 이것들을 이용해 예제 몇개를 풀어보도록 하겠습니다. 


감사합니다. 

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


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






반응형