Поток Java завершается ненормально с исключением с сообщением null. - PullRequest
0 голосов
/ 05 марта 2012

Я пытаюсь выполнить многопоточную программу, используя Executors of Java.При выполнении поток Java прерывается ненормально.Я обнаружил исключение через try-catch, однако в исключении нет сообщения (ноль).

Ошибка является случайной, однако я «подозреваю», что ошибка происходит после того, как я сделал вызов функции в этом потоке.Я попытался увеличить размер стека потоков до 1024/2048, но результат остался прежним.

Может кто-нибудь указать на подход к отладке, который будет принят здесь.Так как у меня нет информации об исключении, я не могу его обработать.

Я работаю в 64-битной среде Windows, с Java 1.6

1 Ответ

1 голос
/ 05 марта 2012

При использовании класса Executors для создания пула потоков используйте метод, который принимает ThreadFactory;пример ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory).В вашей реализации ThreadFactory назначьте UncaughtExceptionHandler;пример ниже

public final Thread newThread(final Runnable r) {
    Thread newThread = threadFactory.newThread(r); // you can use default thread factory
    newThread.setName("threadName");
    newThread.setDaemon(Boolean.TRUE);
    newThread.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(final Thread t, final Throwable e) {
            // log
        }
    });
    return newThread;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...