https://blog.naver.com/highkrs/220274474749
안녕하세요 모프 입니다.
오늘은 멀티스레드 프로그래밍을 작성하는 방법중 "Runnable" 인터페이스를 활용한 방법을 알아보도록 하겠습니다.
1. Runnable 인터페이스를 사용해 보자
"Runnable" 인터페이스는 "run" 메소드 딸랑 하나 있는 인터페이스 입니다.
그래서 "Runnable" 인터페이스를 구현하면 "run"메소드 하나만 재정의 해주면 되죠.(인터페이스 메소드는 추상메소드임으로 반드시 재정의 해주어야 합니다.)
위 사진은 클래스 내부를 살펴 보았는데요.
딸란 "run"메소드가 딸랑 하나 있는것을 보실 수 있습니다.
그럼 "Runnable"인터페이스를 한번 사용해 볼께요.
위 코드는 "Runnable"인터페이스로 "MorphTimer"라는 클래스를 정의해보았습니다.(빨간 네모)
물론 추상메소드인 "run"메소드를 재정의 해주어야 합니다.(녹색 네모)
소스 내용은 "B"라는 문자를 1초마다 1000번 찍는 내용입니다.
그럼 이렇게 구현된 "MorphTimer"를 가지고 직접 메인클래스에서 사용해 보겠습니다.
메인에서 "MorphTimer" 클래스를 사용해 보았습니다.
우선 "MorphTimer"클래스의 객체인 "m_timer"를 생성하하구요.
이 "m_timer"객체를 스레드레 담아서 사용하는 것입니다.
그래서 녹색 네모 부분을 보시면 "Thread"클래스의 객체를 생성할떄 "m_timer"를 넣어주는 모습입니다.
이렇게 "m_timer"를 담은 "m_thread"를 실행시키면 "B"라는 문자를 출력하기 시작하게 되겠죠.
결과 값을 동영상으로 보셨습니다.
이것 말고 또 다른 사용법을 알아볼게요.
그전에는 새로운 클래스를 정의하여 "Runnable"인터페이스 구현을 통해 사용해야하는 번거로움이 있었죠.
하지만 위 코드에서는 새로운 클래스 정의 없이 바로 사용하고있죠.
"m_thread" 객체를 생성할때 "Runnable"인터페이스를 그 위치에서 바로 구현해서 넣어줍니다.(녹색 네모 부분)
전전 강의에서 배웠던 "Thread"강의와 모습이 흡사함을 보실수 있습니다.
결과물은 물론 "A"문자를 1초마다 1000번 출력을 하게 되겠죠.
2. 왜 Runnable 인터페이스를 사용해야하는가?
우리가 생각해보면 왜 "run"메소드만 딸랑 있는 "Runnable"인터페이스를 직접사용하는 것일까? 라는 의문점을 가지시게 되실겁니다.
왜냐하면 "Thread"클래스를 그냥 사용해도 되거든요.
"Runnable"을 사용하는 이유는 딱히 없습니다.
단지 활용성이 좋다는 이유료 "Runnable"을 많이 사용하고 있습니다.
인터페이스는 이벤트 헨들러 역활을 많이 한다고 말씀드렸었는데, 라이브러리를 만들떄 "Runnable"를 활용하여 많이하여 만든다고 하네요.
오늘 이야기는 여기까지 할께요.
질문사항있으시면 댓글로 이야기 해주시면 잘 설명해드릴께요. 감사합니다.
'IT > 자바' 카테고리의 다른 글
쓰레드 기아 (0) | 2018.05.18 |
---|---|
쓰레드 공정 (0) | 2018.05.18 |
상속 스레드, Runnable 인터페이스 스레드 (0) | 2018.05.17 |
GridLayout (0) | 2018.05.16 |
BorderLayout (0) | 2018.05.16 |