컴퓨터프로그래밍/JAVA

JAVA - 스레드

zelkova 2013. 10. 16. 14:30

<목차로 돌아가기>


스레드는 프로세스 내에서 동작하는 작은 실행 단위라고 할 수 있다. 여러 개의 스래드를 사용해서 동시에 어떤 작업을 수행하는 것을 멀티 스레드라고 한다.


프로세스

프로세스는 운영체제 내에서 동작하는 독립적인 실행 단위로써 독립적인 주소 공간을 가지면서 동작한다.


스레드

스레드는 하나의 프로세스 내에서 동작하는 작은 실행 단위를 말한다.

1. 프로세스보다 작은 단위이기 때문에 프로세스보다 가볍다.

2.스레드는 서로 자원을 공유하면서 동작한다.

3. 경략 프로세스라고도 한다.


스레드는 프로세스 위에서 메모리를 서로 공유하면서 동작한다.

이때 스레드는 자신만으 지역 변수를 가질 수 있다.


*스레드를 제대로 다루는 것은 쉽지 않은 일 입니다. 또한 알아야 할 것도 많습니다. 그래서 시중에는 스레드 주제로만 구성된책도 있습니다. 


스레드 생성

스레드를 생성하는 방법에는 두 가지가 있습니다. 첫번째는 Thread클래스를 상속하는 방법이고 두번째는 Runnable 인터페이스를 구현하능 방법입니다.


Thread 클래스를 사용한 스레드 생성

1)클래스를 상속

class T1 extends Thread { }


2)스레드 몸체 정의

public void run(){

System.out.println("Thread T1");

}


3)스레드 생성 및 실행

T1 t = new T1();

t.start();


java.lang.Thread 클래스의 생성자

Thread()

새로운 스레드 객체를 생성한다.


Thread(String name)

새로운 스레드 객체를 지정된 이름으로 생성한다.


java.lang.Thread 클래스의 메소드

void

run()

스레드가 생성되어 실행될 때 호출되는 메소드이다.


예제)

class MyThread extends Thread{

private int num;

private String name;


public MyThread(String name, int num){

this.name = name;

this.num = num;

}


public void run(){

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

System.out.println(name + " ; " + i);

}

}


public class Test{

public static void main(String args[]) {

MyThread t1 = new MyThread("first", 2000);

MyThread t2 = new MyThread("second", 2000);

MyThread t3 = new MyThread("Third", 2000);


t1.start();

t2.start();

t3.start();

}

}


Runnable 인터페이스를 사용한 스레드 생성

1)인터페이스 구현

class T2 implements Runnable{}


2)스레드 몸체 정의

public void run(){

System.out.println("Thread T2");

}


3)스레드 생성 및 실행

T2 t = new T2();

Thread Thread = new Thread(t);

thread.start();


java.lang.Runnable 인터페이스의 생성자

Thread(Runnable target)[]

새로운 스레드 객체를 생성한다. 이때 target은 run() 메소드를 호출할 객체이다.


Thread(Runnable target, String name)

새로운 스레드 객체를 지정된 이름으로 생성한다. 이때 target은 run()메소드를 호출할 객체이다.


java.lang.Runnable클래스의  메소드

void

run()

스레드가 생성되어 실행될 때 호출되는 메소드이다.


예제)


class MyThread implements Runnable{

private int num;

private String name;


public MyThread(String name, int num){

this.name = name;

this.num = num;

}

public void run(){

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

System.out.println(name + " : " + i );

}

}


public class Test {

public static void main(String args[]){

Thread t1 = new Thread(new MyThread("first", 2000));

Thread t2 = new Thread(new MyThread("first", 2000));

Thread t3 = new Thread(new MyThread("first", 2000));


t1.start();

t2.start();

t3.start();

}

}



반응형

'컴퓨터프로그래밍 > JAVA' 카테고리의 다른 글

한글깨짐 방지  (0) 2014.06.12
12_배열예제(1등구하기)  (0) 2013.11.04
JAVA - 컬렉션  (0) 2013.10.15
JAVA - Scanner클래스  (0) 2013.10.14
JAVA - 포메팅 구조  (0) 2013.10.14