지난 시간에 이어 Thread 를 인터페이스로 구현해보자.
1. Runnable 인터페이스를 구현하고 run() 함수를 오버 라이딩 한다.
class Test2 implements Runnable{
@Override public void run() { // TODO Auto-generated method stub while(true) { try {
Thread.sleep(1000); }catch(Exception e) {} System.out.println("+++"); } }
} |
2. main() 함수에서 Test2 클래스를 생성하고,
Thread 클래스의 인자 값으로 넣어준 다음 start() 함수를 호출한다.
public static void main(String[] args) { // TODO Auto-generated method stub
Test2 t2 = new Test2(); Thread t = new Thread(t2); t.start();
while(true) { try {
Thread.sleep(1000); }catch(Exception e) {} System.out.println("HA HA HA !!!"); } } |
Thread 클래스를 직접 상속하는 방법과는 조금 틀리지만, 이 또한 유용한 방식이다.
실행 결과는 하기와 같이 나온다.
[ 실행 결과 ]
HA HA HA !!! +++ +++ HA HA HA !!! +++ HA HA HA !!! +++ HA HA HA !!! +++ HA HA HA !!! HA HA HA !!! +++ HA HA HA !!! +++ HA HA HA !!! +++ HA HA HA !!! +++ +++ HA HA HA !!! +++ HA HA HA !!! |
한 발자국 더 나아가 3개의 Thread 를 동시에 구현해보자.
main , Test1, Test2 이다.
public class ThreadTest {
public static void main(String[] args) { // TODO Auto-generated method stub
Test t1 = new Test(); t1.start();
Test2 t2 = new Test2(); Thread t = new Thread(t2); t.start();
while(true) { try {
Thread.sleep(1000); }catch(Exception e) {} System.out.println("HA HA HA !!!"); } }
}
class Test extends Thread{ public void run() { while(true) { try {
Thread.sleep(1000); }catch(Exception e) {} System.out.println("*****"); } } }
class Test2 implements Runnable{
@Override public void run() { // TODO Auto-generated method stub while(true) { try {
Thread.sleep(1000); }catch(Exception e) {} System.out.println("+++"); } }
} |
[ 실행 결과 ]
HA HA HA !!! +++ ***** HA HA HA !!! +++ ***** HA HA HA !!! +++ ***** ***** HA HA HA !!! +++ HA HA HA !!! +++ ***** ***** +++ HA HA HA !!! HA HA HA !!! ***** +++ ***** +++ HA HA HA !!! HA HA HA !!! +++ ***** HA HA HA !!! ***** +++ HA HA HA !!! ***** +++ |
그런데, 쓰레드가 생각한 것 처럼 하나씩 균등하게 실행 되지는 않는다.
즉, 쓰레드는 동시에 여러 작업을 할 수는 있지만 특정 상황에서 항상 그 쓰레드가 실행될 수는 없다.
물론 우선 순위라는 것을 두어 먼저 실행 될 확률을 높여줄 순 있다. 이에 대해선 다음 편에서 다루어 보자.
오늘도 티스토리를 방문해주셔서 감사합니다.
'앱 만들기 > 안드로이드 study' 카테고리의 다른 글
안드로이드 GIF 이미지 재생 하기 - Glide 사용하기(2) (12) | 2020.05.12 |
---|---|
안드로이드 화면 전환 방법. (6) | 2020.05.11 |
쓰레드 우선 순위 설정하기. (7) | 2020.05.06 |
안드로이드 디밍에 빠지지 않게 하기! (2) | 2020.05.04 |
Thread 작성 하는 법. JAVA (2) | 2020.05.04 |
댓글