'JAVA/JSP/Source'에 해당되는 글 36건

  1. 2008.07.14 Thread

Thread

|


----- 쓰레드 (Thread) -----

 - 프로세스내에서 순차적으로동작하는 문장들의 단일집합

 - 하나의 프로세스는 다수개의 스레드를 정의할 수 있으며, 다수개의 스레드는

   동시에 수행 될 수 있다.



-----두개의 쓰레드-----


class ThreadDouble
{
 public static void main(String[] args)
 {

/////객체 생성과 이름부여 /////
  ThreadDoubleTest t1 = new ThreadDoubleTest("java basic");
  ThreadDoubleTest t2 = new ThreadDoubleTest("java pro");

///// run메소드 호출 /////
  t1.start();
  t2.start();
 }
}


---------------------------------------------


class ThreadDoubleTest extends Thread
{
   public ThreadDoubleTest(String str)
   {
    super(str);     //Thread생성장에 str을 인수로 준다.
   }
 
   public void run()
   {
 

    try

    {
       for(int i=0; i<10; i++)
       {
         Thread.sleep(2);    // 2/1000초 동안 인터벌을 준다.
         System.out.println(i+getName());  // 쓰레드의 이름을 출력
       }
   

       System.out.println("end !!"+getName());
    }

    catch(InterruptedException e)
    {
   
}

 }


}


 

----- Runnable Interface 사용 -----


class ThreadfromRunable
{
   public static void main(String[] args)
   {
      ThreadRunable r = new ThreadRunable();
      Thread t = new Thread(r);  // 쓰레드객체안에 Runnable객체를 인수로 준다.
      t.start();

      //new Thread(new ThreadRunable()).start();
 }

}


--------------------------------------------


class ThreadRunable implements Runnable
{
 public  void run()
 {
  try{
   
   for(int i=0; i<10; i++)
   {
    Thread.sleep(200);
    System.out.println("java Thread :"+i);
   }
  }catch(InterruptedException e)
  {
  }
 }

}


----- setPriority(우선순위) -----


class ThreadPriority
{
 public static void main(String[] args)
 {
  ThreadTest t1 = new ThreadTest("first Tread");
  ThreadTest t2 = new ThreadTest("second Tread");
  ThreadTest t3 = new ThreadTest("thrid Tread");
 
  int pt1 = Integer.parseInt(args[0]);
  int pt2 = Integer.parseInt(args[1]);
 
  t1.setPriority(pt1);                      //실행 우선순위 값을 설정한다. 클수록 빠름
  t2.setPriority(pt2);
  t3.setPriority(Thread.MIN_PRIORITY);  // 가장 낮은 우선순위로 설정
 
  t1.start();
  t2.start();
  t3.start();
 }

}


----------------------------------------------


class ThreadTest extends Thread
{
 public ThreadTest(String str)
 {
  super(str);
 }
 
 public  void run()
 {
  try{
   
   for(int i=0; i<10; i++)
   {
    Thread.sleep(20);
    System.out.println(i+getName()+"priority :"+getPriority());
   }
   System.out.println("end !!"+getName());
  }catch(InterruptedException e)
  {
  }
 }

}


-----Thread를 이용한 원 그리기와 현재 시간 출력 -----


import java.awt.*;
import java.util.*;
import java.text.*;


public class DrawThread extends java.applet.Applet implements Runnable
{
   int x,y,hour,min,sec,year,month,day;
   Random ran;
   Dimension size;
   Calendar cal;
   DateFormat df;
 
   String dateformat;
 
   Thread t ;
 
   public void init()
   {
      ran = new Random();
      t= new Thread(this);
 
      df = DateFormat.getDateInstance();     //DateFormat객체 생성
   

      dateformat = df.format(new Date());  
   
   System.out.println(dateformat);  
 
      size = getSize();  
      t.start();
    }


   public void paint(Graphics g)
   {
      if(x != 0 || y !=0)
      g.fillOval(x,y-10,10,10);                  // 채워진 원 그리기
 
      g.drawString((year+"년"+month+1) "월"+day+"일"+

                        hour+"시"+min+"분"+sec+"초",50,290);   // 현재 시간 출력
   }
 
 /*
 public void update(Graphics g)
 {
  //g.clipRect(x,y,10,10);
  paint(g);
 }
 */


   public void run()
   {
      while(true)
      {
         try{
                Thread.sleep(100);
             }
             catch(InterruptedException e)
             {
              }

     cal = Calendar.getInstance();      // 매 1/10초마다 시간과 랜덤 좌표 구해서
                                                  // paint()메소드 호출
   
     x = ran.nextInt(size.width);
     y = ran.nextInt(size.height);
   
     year = cal.get(Calendar.YEAR);
     month = cal.get(Calendar.MONTH);
     day = cal.get(Calendar.DATE);
     hour = cal.get(Calendar.HOUR);
     min = cal.get(Calendar.MINUTE);
     sec = cal.get(Calendar.SECOND);
       
     repaint();
  }


 }


}

'JAVA/JSP > Source' 카테고리의 다른 글

Stream  (0) 2008.07.14
Image  (0) 2008.07.14
Graphics(clipRect())  (0) 2008.07.14
아날로그 시계(AWT)  (0) 2008.07.14
JCheckBox/ JRadioButton /JComboBox/ JTable  (0) 2008.07.14
And