블로그 이미지
GUCCI

카테고리

전체보기 (111)
여행 (1)
기기 (2)
쇼핑 (0)
게임 (0)
etc. (6)
취업이야기 (0)
업무일지 (5)
리눅스 (38)
웹프로그래밍 (2)
네트워크 (4)
JAVA (17)
Android (0)
IOS (2)
LUA (8)
C/C++ (1)
Objective C (2)
SERVER (2)
그누보드4 (1)
MSSQL (2)
Programming (1)
자바스크립트 (4)
HTML/CSS (1)
LGNAS (0)
Total
Today
Yesterday

'쓰레드'에 해당되는 글 1건

  1. 2011.03.08 Thread 클래스 3

Thread 클래스

JAVA / 2011. 3. 8. 13:35

Thread 클래스 

 

   Single Thread : 내부에 쓰레드를 하나씩 동작 시키는 방식 

   Multi Thread   : 내부에 쓰레드를 여러개 단위로 동작 시키는 방식

 

 

  Thread 구현 방법

 

   Tread 클래스 구현 ex) class A extends Thread 후 run 메서드 오버라이딩. 사용

   Runnable 인터페이스 구현 ex) class A implements Runnable 의 run 메서드 구현. 사용

 

 

  Thread 우선순위

 

   특정 Thread가 더 많은 작업 시간을 가지도록 한다.

   우선순위의 범위 1 ~ 10 까지 높을수록 우선순위가 높다. 기본 main은 5이다.

 

   setPriority ( ) : 우선 순위값을 변경한다.

   getPriority ( ) : 우선 순위값을 반환한다.

   sleep ( ) : 쓰레드에 대기시간을 설정한다.

   start ( ) : 쓰레드를 실행시킨다. 내부적으로 run 메서드를 호출한다.

   run ( ) : start시 해당 내용을 실행한다. 오버라이드로 자신에게 맞게 적용한다.

   suspend( ) : 쓰레드를 잠시 정지 시킨다.

   resume ( ) : 일시정지된 쓰레드를 다시 시작한다.

   stop ( ) : 실행중인 쓰레드를 강제 종료 시킨다.

 

   import javax.swing.JOptionPane;
   class ThreadEx1{
      public static void main(String[] args) {
         String input=JOptionPane.showInputDialog("입력"); //메세지 입력박스
         System.out.println("입력한 값 = "+input);
         for (int i=0; i<10; i++)  {
             System.out.println(i);
             try{
                 Thread.sleep(1000); //현재 실행 Thread를 1000초만큼 대기상태.main
             }catch(Exception e){}}}} //예외가 발생되므로 예외처리


-출력 결과-

입력한 값 = power
0
1
2
3

.....

프로그램이 실행되면 입력창이 뜨고 입력시 현재 Thread인 main이 sleep

메서드에 의해 지정된 값만큼 딜레이가 생기며 카운트 한다.
 

  ThreadGroup 클래스

 

   1. 서로 관려된 Thread를 그룹으로 다룰 수 있다.

   2. 보안상의 이유로 도입된 개념이다.

   3. 생성자를 통하여 그룹이름을 추가 및 가입할 수 있다.

 

   activeGroupCount ( ) : Thread 내의 그룹 개수를 반환한다.

   activeCount ( ) : 그룹내의 Thread 수를 반환한다.

   list ( ) : Thread 그룹의 정보를 출력한다.

   setMaxPriority ( ) : 해당 그룹의 우선순위를 정의한다.

 

   class ThreadGroupEx1{
      public static void main(String[] args) {
          ThreadGroup main=Thread.currentThread().getThreadGroup();
          ThreadGroup grp1=new ThreadGroup("그룹1"); //그룹명 그룹1 생성
          ThreadGroup grp2=new ThreadGroup("그룹2");
          ThreadGroup subGrp1=new ThreadGroup(grp1,"자식1:"); //grp1그룹의 서브그룹 자식1
         grp1.setMaxPriority(3); //grp1 그룹의 우선순위를 3으로 set . sub그룹도 변경됨
          
Thread t1=new Thread(grp1,"스레드1"); //Thread생성시 grp1그룹에 속함.
          Thread t2=new Thread(subGrp1,"스레드2");
          Thread t3=new Thread(grp2,"스레드3");
         t1.start(); //Thread 실행
         t2.start();
         t3.start();
         System.out.println("Group Name"+main.getName());
         System.out.println("Active ThreadGroup "+main.activeGroupCount()); //그룹개수
         System.out.println("Active Thread "+main.activeCount()); //Thread 개수
         main.list();  }} //Thread 정보 출력

 

-출력 결과-

Group Namemain
Active ThreadGroup 3
Active Thread 1
java.lang.ThreadGroup[name=main,maxpri=10]
    Thread[main,5,main]
    java.lang.ThreadGroup[name=그룹1,maxpri=3]
        java.lang.ThreadGroup[name=자식1:,maxpri=3] *자식그룹은 들여쓰기
    java.lang.ThreadGroup[name=그룹2,maxpri=10]
계속하려면 아무 키나 누르십시오 . . .

Thread에 그룹을 부여하여 그룹단위로 관리가 가능하게 한다. 그룹안에 다시 그

룹이 들어갈 수 있다.

  Deamon Thread

 

   1. 일반 Thread의 작업을 보조한다. Thread내부의 Thread를 말한다.

   2. 종료 시점은 일반 Thread가 종료될 때 강제 종료된다.

 

   class DaemonEx1 extends Thread{ //Thread 클래스 상속
      static boolean autoSave=false;
      public static void main(String[] args) {
           Thread t=new Thread(new DaemonEx1()); 
           t.setDaemon(true); //setDaemon 메서드를 통한 활성화. false면 종료안됨
           t.start(); //Thread 시작 (main)
           for (int i=0; i<=20 ; i++ )  {
               try{
                  Thread.sleep(1000); //20까지 conunt 하며 딜레이 발생
               }catch(InterruptedException e){}
              System.out.println(i);
              if(i==5)
               autoSave=true;  } //5일때 true
          System.out.println("프로그램을 종료합니다");   }
      public void run(){
          while(true){
              try{
                 Thread.sleep(3*1000);
              }catch(InterruptedException e){}
              if(autoSave)
                 autoSave();  } }
     public void autoSave() {
          System.out.println("저장합니다"); }}

 

-출력 결과- 

0
1
2
3
4
5
6
7
8
저장합니다
9
10
11
저장합니다
12
13
저장합니다

[출처] Thread ( 쓰레드 )|작성자 stryper_top

'JAVA' 카테고리의 다른 글

이미지 태그 SRC 경로 추출  (3) 2011.03.16
파일명 추출  (2) 2011.03.16
HttpURLConnection 이용시 헤더값 세팅 방법  (3) 2011.03.03
java.util 패키지  (3) 2011.03.03
java.net - Url 클래스  (5) 2011.03.03
Posted by GUCCI
, |

최근에 달린 댓글

글 보관함