2008. 12. 4. 19:02
[JAVA] thread 처리후, 결과값을 호출하는 함수에서 가져오기 (?)
2008. 12. 4. 19:02 in JAVA
public class Cust { // 폴링 딜레이...(millisecond) private static final int POLL_DELAY = 100; public static boolean getCust(String id, int delay) throws TimedOutException{ CustThread ct = new CustThread(id); ct.start(); int timer = 0; boolean returnValue = false; while(true) { if (ct.isReturned()) {// getCust()의 실행이 끝났으면 returnValue = ct.getReturnValue(); break; } else {// 아직 끝나지 않았다면 try { // 좀 쉬어주고 Thread.sleep(POLL_DELAY); } catch(InterruptedException ie){} timer += POLL_DELAY; if (timer > dely) { // 타임 아웃되었는지 체크 // 주어진 시간동안 답이 없으면 Exception 발생 throw new Exception("TIME_OUT"); // return false; <-- 이렇게 하셔도 } } } // end of while return returnValue; } static class CustThread extends Thread { private boolean isReturned = false; private String id; private boolean returnValue = false; public CustThread (String id) { this.id = id; } public void run() { /* 실제 getCust(String aaa); 를 사용 */ AAA a = new AAA(); returnValue = a.getCust(id); // getCust() 의 실행이 끝났으면 flag 세팅 isReturned = true; } public boolean isReturned() { return isReturned; } pubilc boolean getReturnValue() { return returnValue; } } }