쓰레드

2019. 8. 16. 11:59프로그래밍/Java

public class Test01 extends Thread{

	public Test01(String name) {
		super(name);
	}
	
	public void run() {
		for(int i=0; i<10; i++) {
			try { //예외처리
				sleep(1000);
				System.out.println("Thread name:" +  currentThread().getName());
				System.out.println("\t i =" + i);
			} catch (InterruptedException e) {
				e.printStackTrace();  
				//e.printStackTrace(); 메소드 getMessage, toString과는 다르게 printStackTrace는 리턴값이 없다. 
				//이 메소드를 호출하면 메소드가 내부적으로 예외 결과를 화면에 출력한다. printStackTrace는 가장 자세한 예외 정보를 제공한다.
				
			}
		}
	}
	
	public static void main(String[] args) {
	
		Test01 te = new Test01("First");
		te.start(); //Runable 상태
	}

}

 

Runnable로 implemnts를 하는 이유는 더 확장성있게 만들 수 있음


public class Test01 implements Runnable{      //extends Thread{

	//implemnts 인경우 부모클래스가 없기때문에 super는 안씀
	String name;
	public Test01(String name) {
		this.name= name;
	}
	
	public void run() {
		for(int i=0; i<10; i++) {
			try { //예외처리
				
				Thread.sleep(1000);
				System.out.println("Thread name:" +  Thread.currentThread().getName());
				System.out.println("\t i =" + i);
			} catch (InterruptedException e) {
				e.printStackTrace();  
				//e.printStackTrace(); 메소드 getMessage, toString과는 다르게 printStackTrace는 리턴값이 없다. 
				//이 메소드를 호출하면 메소드가 내부적으로 예외 결과를 화면에 출력한다. printStackTrace는 가장 자세한 예외 정보를 제공한다.
				
			}
		}
	}
	
	public static void main(String[] args) {
		//Runnable을 받을때 이 3가지를 기본으로 가져간다.
		Test01 te = new Test01("First");
		Thread aa=new Thread(te); 
		aa.start(); //Runnable 상태
	}

}

다른 예


public class Test01 implements Runnable{      //extends Thread{

	//implemnts 인경우 부모클래스가 없기때문에 super는 안씀
//	String name;
//	public Test01(String name) {
//		this.name= name;
//	}
	
	public void run() {
		for(int i=0; i<10; i++) {
			try { //예외처리
				
				Thread.sleep(1000);  //1초 뒤에 뜨게함
				System.out.println("Thread name:" +  Thread.currentThread().getName());
				System.out.println("\t i =" + i);
			} catch (InterruptedException e) {
				e.printStackTrace();  
				//e.printStackTrace(); 메소드 getMessage, toString과는 다르게 printStackTrace는 리턴값이 없다. 
				//이 메소드를 호출하면 메소드가 내부적으로 예외 결과를 화면에 출력한다. printStackTrace는 가장 자세한 예외 정보를 제공한다.
				
			}
		}
	}
	
	public static void main(String[] args) {
		
		//Runnable을 받을때 이 3가지를 기본으로 가져간다.
		Test01 te = new Test01();
		Thread th=new Thread(te, "Superman");  //스레드 객체 만들어야함
		th.start(); //Runnable 상태
	}

}

'프로그래밍 > Java' 카테고리의 다른 글

예외 처리기  (0) 2019.08.16
notify, wait  (0) 2019.08.16
제네릭  (0) 2019.08.15
anonymous class  (0) 2019.08.15
8_15  (0) 2019.08.15