스레드를 활용한 wait 처리를 구현하기 위해 테스트한 결과를 기록해 두었음.
평소에 thread를 잘 활용하지 않으니 이런 문제가 발생한거 같은데 좀더 많은 탐구가 필요한 것으로 사료 됨.
응용하면 consumer, producer형태에 사용할 수 있음. 이번에 mq관련 프로젝트에서 아래 내용을 활용해서 적용.
socket listen => client socket 개별 생성 => map에 메시지 넣고 wait
mq consumer thread로 동작 메시지 수신 시 map에서 꺼내 notify => client socket은 응답 메시지 작업 후 close
그냥 주저리 내용이므로 참조만 바랍니다. 볼 사람이나 있을려나 훗~
결과 :
job-1
job-2
waitStart-1
run-1
run-2
waitEnd-1
waitEnd-2
run-3
waitStart-2
job-3
public class TeParent { class TeChild implements Runnable{ TeParent p; TeChild(TeParent p){ this.p = p; } @Override public void run() { try { System.out.println("run-1"); Thread.sleep(3000); System.out.println("run-2"); this.p.waitEnd(); System.out.println("run-3"); } catch (InterruptedException e) { e.printStackTrace(); } } } public synchronized void waitStart() throws InterruptedException{ System.out.println("waitStart-1"); wait(); System.out.println("waitStart-2"); } public synchronized void waitEnd(){ System.out.println("waitEnd-1"); notify(); System.out.println("waitEnd-2"); } TeParent(){ try{ System.out.println("job-1"); new Thread(new TeChild(this)).start();; System.out.println("job-2"); waitStart(); System.out.println("job-3"); }catch(Exception e){ e.printStackTrace(); } } public static void main(String[] args){ new TeParent(); } }
'etc > old' 카테고리의 다른 글
TypeScript 2.1 출시 (0) | 2016.12.14 |
---|---|
[java] thread example - loop 방식이던가 ? (0) | 2015.08.17 |
angular-js form post 처리 (spring-modelAttribute 처리) (0) | 2015.07.08 |
자바 웹 프로젝트를 하면서 격는 한글 처리 문제점... (0) | 2015.07.01 |
[Arduino] 사운드 센서 (0) | 2015.06.26 |