2008년 11월 10일
자바 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)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
지난 주 수업은 학생들의 편의를 위해 DB를 공부했단다.
진도에 대해서는 그 전 주에 수업시간에 이미 논의한 것인데...잊었나보구나?
이번 주는 네트워크프로그래밍이란다.