소켓의 accept 을 응용한 형태로 구현해 봤습니다.
이 형태가 맞는지 ? 원본 소스를 보지 않았는데 나중에 시간되면 한번 봐봐야지요 -_-;
아래 부분을 좀 수정 해야 될거 같은데 흠..
Thread.sleep(Long.MAX_VALUE);
결과 :
Thread가 2개가 유지 됨 / 1,2 => 2,3 => 3,4 이런 형태로 유지
start
create : 274064735
create : 841752171
close : 274064735
create : 592705150
close : 841752171
create : 244621161
close : 592705150
package kr.co.jwsnt.libs.test; public class TeNotifyRecur{ /* * 결과 * */ public static void main(String[] args){ new TeNotifyRecur(); } class TeThread extends Thread{ private TeNotifyRecur p; public TeThread(TeNotifyRecur p){ this.p = p; } @Override public void run() { try { Thread.sleep(2000); p.reconnect(); } catch (Exception e) { e.printStackTrace(); } } } TeNotifyRecur(){ System.out.println("start"); connect(); while(true){ try { Thread.sleep(Long.MAX_VALUE); } catch (InterruptedException e) { break; } } System.out.println("end"); } private void connect() { Object obj = new Object(); System.out.println( "create : " + obj.hashCode() ); try{ Thread t = new TeThread(this); t.setDaemon(true); t.start(); startWait(); }catch(Exception e){ System.out.println( "conn : " + e.toString() ); }finally{ close(obj); } } private void close(Object obj){ System.out.println( "close : " + obj.hashCode() ); obj = null; } public synchronized void reconnect(){ notify(); connect(); } public synchronized void startWait() throws InterruptedException{ wait(); } }
'etc > old' 카테고리의 다른 글
[Spring] 스프링 부트에서 CORS 적용하는 방법 (0) | 2017.02.15 |
---|---|
TypeScript 2.1 출시 (0) | 2016.12.14 |
[JAVA] thread example (0) | 2015.08.13 |
angular-js form post 처리 (spring-modelAttribute 처리) (0) | 2015.07.08 |
자바 웹 프로젝트를 하면서 격는 한글 처리 문제점... (0) | 2015.07.01 |