[파일전송 서버만들기]1.Thread, Runnable 차이, run() start()

이성훈·2021년 9월 8일
0

JAVA

목록 보기
3/6
myThread extends Thread{
  @Override
	public void run() {
		...
	}
}
//클래스안이던 밖이던.
myThread thread = new myThread();
//해당클래스가 Thread를 상속하였기때문에.
//Thread클래스의 생성자를 호출한거랑같고,
//start() 메소드로 쓰레드바로 실행가능.
thread.start();
myThread2 implements Runnable{
  @Override
	public void run() {
		...
	}
}
myThread2 runnableThread = new myThread2();
//Runnable 은 인터페이스이므로, 
//run()메소드를 제공하는 약속을 정한것이고 실제로는
//Thread 객체안에 해당 클래스를넣어야 동작함
Thread myThread = new Thread(runnableThread);
//start()로 실행
myThread.start();

해당 클래스 생성자호출and객체에담음 => (Thread클래스생성자호출) => Thread클래스객체.start(); 이 과정으로 쓰레드는 실행된다.

여기서 start()와 run()의차이는 run()의경우 클래스내부의 메소드를 온전히 실행시키는것에 그치므로, run메소드안에 코드가 갇히게된다. 예로들어 main메소드에서 run()을 호출해버리면, run()이 만드는 쓰레드코드가 전부 끝나야 다시 main 메소드로온다는소리.

즉 쓰레드의 원래 역할인 병행작업하려면 start();를 쓰자.

run()메소드안의 코드는 스레드로작업이돌아가는것, 그메소드에 컴파일러가 갇히지않는다는것 , start()메소드는 run()메소드를 찾아서 실행시키는것을 명심

profile
I will be a socially developer

0개의 댓글