JAVA

[java] 자바 애플릿 리소스 로딩이나 네트워크에서 받을 리소스가 클때 로딩이 안되거나 에러날때 해결법(java7 버전에서 많이 발생되는 문제)

AlrepondTech 2012. 8. 20. 14:08
반응형

 

 

 

 

 

=================================

=================================

=================================

 

 

 

 

 

 

 

출처: (202psj.tistory.com)

 
요번 java 7버전으로 업데이트 되면서 이런 현상이 두두러진다.
 
애플릿이 시작 할때 리소스를 로드하는 부분이나 로드 전에 잠시 딜레이를 준다.
 
 
딜레이를 주는 클래스 부분 //(202psj.tistory.com)
 
import java.util.*;
import java.util.logging.Handler;
 
public class CTTimer 
{
Timer _timer = new Timer();
long _delay;
TTask _timerTask = null;
Runnable onTimer;
 
class TTask extends TimerTask
{
@Override
public void run() 
{
// TODO Auto-generated method stub
//OroBaduk.__gHandler.post(onTimer);
onTimer.run();
stop();
}
}
   
        //(202psj.tistory.com)
public CTTimer()
{
_delay = 30000;
}
 
public void start(int delay, Runnable cb)
{
_delay = delay;
onTimer = cb;
 
_timerTask = new TTask();
_timer.schedule(_timerTask, _delay, _delay);
 
}
 
public void start2(int delay, Runnable cb)
{
_delay = delay;
onTimer = cb;
 
_timerTask = new TTask();
_timer.schedule(_timerTask, 0, _delay);
 
}
 
public void stop()
{
_timer.cancel();
}
 
public boolean isRunning()
{
if(_timerTask == null || _timer == null)
return false;
 
return true;
}
}
 
 
-----------------------------------------------------------------------------
메인 클래스 부분.
 
public class CGameApp extends JPanel implements KeyListener, Runnable
{
        public void start()
{
 
               //start 부분이나 초기화 부분, 시작관련 부분에 넣어준다.
CTTimer _qtimer = new CTTimer();
_qtimer.start(500, this);
 
 
          }
       
        @Override //Runnable <- run 오버라이딩, 쓰레드 따로 시작됨
public void run()
        {
// TODO Auto-generated method stub
loadData(); //애플릿이 시작시 로드되면 안되는 경우가 있어 몇초후 로드가되게끔 설정
}
 
        public void loadData()
        {
        //.....
        // 각종 로드 할 것들.
        //......
        }
 
 
 

 

=================================

=================================

=================================

 

 
 

 

반응형