0

自分では解決できない Java の問題を解決しなければなりません。

私は基本クラスとテストクラスを持っています:

public class Appender extends SMTPAppender{

   private ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new    ScheduledThreadPoolExecutor(1);

   private final class MyTask extends TimerTask{
      @Override
      public void run(){
         //some code
         append(myEvent)
      }
   }

   @Override
   protected void append(ILoggingEvent event){
      //some code
      scheduledThreadPoolExecutor.schedule(task, cacheSize,    TimeUnit.MILLISECONDS);
   }

   @Override
   public synchronized void stop(){
      super.stop()
      scheduledThreadPoolExecutor.shutdown();
      scheduledThreadPoolExecutor.awaitTermination(cacheSize,    TimeUnit.MILLISECONDS);
   }

}

   public class AppenderTest {

       @Test
       public void myTest(){
          Appender appender = new Appender();

          methodWhichLogSomeLog(); // will call appender.append()

          appender.stop();

          //some test code
       }

    }

私のappender.stop()オーバーライドが私のScheduledThreadPoolExecutorとそのスケジュールされたTimerTaskを待たなければならないことを待っています。

実際、私のappender.stop()はこのスケジュールされたタスクを待たず、その理由がわかりません。awaitTermination()ロールのようです。

4

0 に答える 0