728x90
728x90
Thread 기초
쓰레드를 만드는 방법
Thread thread = new Thread(()->{ System.out.println("Hello Thread"); });
쓰레드를 만드는 방법은 new Thread()를 할 때 Runnable 함수형 인터페이스를 넣어줌으로써 만들어줄 수 있다.
쓰레드 start
thread.start();
쓰레드를 생성하여 실행하기 위해서는 start()를 사용해주면 된다.
쓰레드 sleep
thread.sleep(1000);
쓰레드에서 잠시 리소스를 빼앗기 위해서 sleep을 할 수 있다. 그렇게 되면 쓰레드가 하던 일을 잠시 멈추고 리소스를 다른 쓰레드에서 넘겨주게 된다.
쓰레드 interrupt
Thread thread = new Thread(()->{ while (true){ try { Thread.sleep(1000L); System.out.println("쓰레드 동작중!"); } catch (InterruptedException e) { System.out.println("끝!"); return; } } }); thread.start(); Thread.sleep(3000L); thread.interrupt(); }
자고있는 쓰레드에 인터럽트를 걸어주면 깨어나고 interrupt exception을 처리하게 된다.
위 예시를 보면 생성된 쓰레드가 동작하면서 계속 "쓰레드 동작중!"을 프린트해주고 있으며 interrupt가 들어온 순간 쓰레드를 종료시키는 것을 볼 수 있다.쓰레드 join
Thread thread = new Thread(() -> { Thread thread = new Thread(() -> { try { Thread.sleep(3000L); } catch (InterruptedException e) { return; } System.out.println("쓰레드 동작완료"); }); thread.start(); System.out.println("Main!"); thread.join(); System.out.println("finish thread");
join()을 사용하면 해당 쓰레드가 종료될 때 까지 기다린다. 아래의 finish thread가 join()이 있기 때문에 쓰레드가 종료된 이후에 실행이 된다.
만약 join()이 없다면 출력의 순서가 'Main! -> finish thread -> 쓰레드 동작완료' 로 동작할 수 있다.
하지만 join()이 있기 때문에 'finish thread'와 '쓰레드 동작완료'의 순서가 항상 '쓰레드 동작완료 -> finish thread'가 된다.
728x90
728x90
'Language > Java' 카테고리의 다른 글
자바 쓰레드 Callable과 Future (0) | 2022.03.03 |
---|---|
자바 Excuter로 쓰레드 처리하기 (0) | 2022.03.03 |
Java8의 시간 API 알아보기(LocalDateTime, Instant 등) (0) | 2022.03.01 |
Optional을 알아보자! (0) | 2022.02.27 |
Java8의 Stream을 알아보자! (0) | 2022.02.22 |