티스토리 뷰

반응형
package day19;
// 쓰레드 상속받아 쓰레드 생성
public class ThreadExam01 {
	
	public static void main(String[] args) {
		//쓰레드를 상속받은 클래스의 객체 생성
		MyThread mt1 = new MyThread("*");
		MyThread mt2 = new MyThread("-");
		//쓰레드 호출
		mt1.start();
		mt2.start();
		
		System.out.println("End Thread class");
	}
}

class MyThread extends Thread {
	
	String str;
	public MyThread(String str) {
		this.str = str;
	}

	@Override
	public void run() {
		for(int i =0; i<7; i++) {
			System.out.println(str);
			
			try {
				Thread.sleep((int)(Math.random()));
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

package day19;


public class ThreadExam02 {
	
	public static void main(String[] args) {
		//Runnable인터페이스를 객체화
		NewThread01 nt1 = new NewThread01("#");
		NewThread01 nt2 = new NewThread01("@");
		//쓰레드 객체화 하며 인터페이스 호출
		Thread t1 = new Thread(nt1);
		Thread t2 = new Thread(nt2);
		//쓰레드 호출
		t1.start();
		t2.start();
		System.out.println("Runnable Thread");
		
	}
	
}
class NewThread01 implements Runnable {
	
	String str;
	public NewThread01(String str) {
		this.str = str;
	}

	@Override
	public void run() {
		for(int i =0;i<7;i++) {
			System.out.println(str);
			try {
				Thread.sleep((int)(Math.random()));
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 
		}

	}

}

 

※ 개념정리

Process(프로세스) : 실행중인 프로그램

Thread(쓰레드) : 프로세스의 자원을 이용하여 실제로 작업을 수행하는 것

 

멀티쓰레드의 장단점

장점

1. CPU의 사용률 향상

2. 효율적인 자원의 사용

3. 사용자에 대한 응답성 향상

4. 간결한 코드

단점

동기화와 교착상태의 발생 가능성이 높아진다.

 

쓰레드 구현방법

1) Thread 클래스 상속

 1. class Name extend Thread

 2. Override -> run

 3. start( )

 

2) Runnable 인터페이스 구현

 1.public class Name implements Runnable

 2. Override -> run

 3. Runnable를 인터페이스한 클래스 객체화

 4. start( )

*재사용성과 일관성으로 인해 Runnable가 일방적이다.

 

 

 

댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함