계속적인 반복문을 사용할때는 즉, 무한루프를 사용할때 while(true)을 사용하고
특정 조건에 break; 를 하도록 작성한다.
서버 프로그래밍등에서 while문을 탈출할때 그 객체의 상태를 보고 탈출하는 방법이 있다.
<Loop.java>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Loop { ExecutorService executorService = Executors.newFixedThreadPool(10); private volatile boolean running = true; // 공유객체를 사용할때 한놈이 계속 바뀌고 한놈은 읽기만 한다면 // volatile 이걸 붙여줘야함 // 1. ruuning을 할때 synchronized를 걸거나 // 2. volatile 한놈은 읽기만 하고 한놈은 쓰기만 할때 이녀석들이 필요 public void start() { executorService.submit(new ChangeLoop(this)); while (running) { try { Thread.sleep(1000L); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("작동"); } executorService.shutdown(); } public boolean isRunning() { return running; } public void setRunning(boolean running) { this.running = running; } public static void main(String[] args) throws InterruptedException { Loop loop = new Loop(); loop.start(); } } | cs |
<ChangeLoop.java>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class ChangeLoop implements Runnable { private Loop loop; public ChangeLoop(Loop loop) { this.loop = loop; } @Override public void run() { try { Thread.sleep(10000L); loop.setRunning(false); } catch (InterruptedException e) { e.printStackTrace(); } } } | cs |
'프로그래밍 > 자바' 카테고리의 다른 글
[Jacoco] 코드 커버리지 측정하기 (0) | 2019.10.12 |
---|---|
[자바] Thread Safety란? (0) | 2019.01.30 |
[자바] 서버 프로그래밍 조직화 (0) | 2019.01.30 |
[자바] 멀티쓰레드 Runnable과 Callable 사용방법 (0) | 2019.01.28 |
람다식이란? (0) | 2019.01.28 |