자바 10주차 첫번째 일기

죄송합니다 교수님 제가 취직을 한게 아니라
회사 교육받으러 연수 갔는대 오해시게 글을 남겼네여 ㅎㅎ
아직 취직 못했구여 이번주부터 열심히 수업 듣습니다!!! ^^
그래서 저번주에 못했던거 동영상을 보고 공부해 봤습니다.

Thread란?
프로그램내에 존재하는 하나의 순차적인 실행의 흐름 (지금까지는 하나의 실행흐름 밖에 없었다.)
이건 싱글 쓰레드이다.


우리가 하던 싱글 쓰레드 프로그램 을 실행시킬 때

Java CanvasExam을 실행시키면 이 클래스에서
메인을 찾은다음
프레임을 만들고 캔버스를 만들고 (위에꺼 실행) 사이즈정하고 더해주고 끝냄
차례대로 실행이 된다. (하나의 흐름만 존재함)

멀티 쓰레드란???
동시에 두 가지 일을 진행시키는 프로그램이 필요할 때 사용하는 것.
ex)게임에서 두 캐릭터가 대결하는 경우같은 것을 말함

동시에 두 개 이상의 실행흐름을 갖는 것을 멀티 쓰레딩이라고 하며 이 프로그램을
멀티 쓰레드 프로그램이라고 한다


싱글쓰레드는 쓰레드가 시작해서 한줄로 싱글쓰레드가 종료된다.

메인 쓰레드가 시작한다음 쓰레드를 생성하고 자신의 업무를 시작
그리고 또 하나의 쓰레드를 사용하고 또 시작 이 때 3개의 작업이 동시에 시작됨.
프로그램은 모든 프로그램이 종료가 되어야 끝난다.

2가의 방법 (쓰레드는 만드는)
java.lang.Thread  //클래스를 상속
java.lang.Runnable을 //인터페이스를 구현  (2개의 클래스를 상속하는 것을 자바에서는 금지하기
때문에 상속을 하면서 인터페이스를 할 때 이것을 씀)

 

class CountThread extends Thread  //Thread를 클래스를 상속한 카운트 쓰레드
{

 public void run(){  //쓰레드가 할일을 runmethod에서 구현
  for (int i = 100;i<110 ;i++ )  //100부터 109까지 증가시키기 위해 for문 돌림
  {
   System.out.println ("지금은"+i+"입니다.");
  }  //여기까지 runmethod이다. 그다음 메인 클래스를 구현
 }
  
 public static void main (String []args){
  Thread thread1 = new CountThread();  //객체 만들고
  thread1.start(); //객체 스타트 시킴
  //CountThread객체를 만들고 시작하기 위해서
  for (int i = 0;i<10 ;i++ )
  {
   System.out.println ("지금은"+i+"입니다.");
  }
 
}
}

동시에 수행되는것이 아니고 작은 시간간격으로 교대로 실행시키는 것이다.

실행 천천히 하기


class CountThread extends Thread  //Thread를 클래스를 상속한 카운트 쓰레드
{

 public void run(){  //쓰레드가 할일을 runmethod에서 구현
  for (int i = 100;i<110 ;i++ )  //100부터 109까지 증가시키기 위해 for문 돌림
  {
   System.out.println ("지금은"+i+"입니다.");
   try {Thread.sleep(1000);
   }catch (InterruptedException e){System.out.println (e.getMessage());}
  }  //여기까지 runmethod이다. 그다음 메인 클래스를 구현
 }
  
 public static void main (String []args){
  Thread thread1 = new CountThread();  //객체 만들고
  thread1.start(); //객체 스타트 시킴
  //CountThread객체를 만들고 시작하기 위해서
  

  for (int i = 0;i<10 ;i++ )
  {
   System.out.println ("지금은"+i+"입니다.");
   try {Thread.sleep(1000);
   }catch (InterruptedException e){System.out.println (e.getMessage());}

  }
 
}
}

느리게 천천히 올라가는게 보였습니다.

Runnable구현 방법

쓰레드가 해야할일을 runmethod에서 시작 클래스를 생성한다음 이 객체를 생성자는 인수로 하여 Thread객체 생성
쓰레드 객체를 start method에서 호출하여 시작

 

class CountRunnable implements Runnable
{
 public void run(){
  for (int i =100;i<110 ;i++ )
  {
   System.out.println ("지금은"+i+"입니다");
  }
 }
}

public class MultiCounter
{
 public static void main (String []args){
  CountRunnable cr = new CountRunnable();  //Countrunnable인수를 만든다음
  Thread thread1 = new Thread(cr); //쓰레드에 실행시키고
  thread1.start();  //start1실행
  for (int i = 0;i<10 ;i++ )
  {
   System.out.println ("지금은"+i+"입니다");
  }
}
}


후~~아직 더 해야 되네여 빨리 빨리 더 공부해야겠습니다

by 파브레가스 | 2008/11/10 21:48 | 실험프로젝트2학기 | 트랙백 | 덧글(1)

트랙백 주소 : http://kim6351.egloos.com/tb/1080953
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 김교수 at 2008/11/11 10:03
음 그랬구나...그런데 또하나의 오해가....^^;;;;

지난 주 수업은 학생들의 편의를 위해 DB를 공부했단다.

진도에 대해서는 그 전 주에 수업시간에 이미 논의한 것인데...잊었나보구나?

이번 주는 네트워크프로그래밍이란다.

:         :

:

비공개 덧글

◀ 이전 페이지 다음 페이지 ▶