Программа зависает, если поток создается в блоке статического инициализатора

Я наткнулся на ситуацию, когда моя программа висит, выглядит как тупик. Но я пытался выяснить это с помощью Jconsole и Visualvm, но они не обнаружили никакого тупика. Пример кода:

public class StaticInitializer {

private static int state = 10;

static {
    Thread t1 = new Thread(new Runnable() {
        @Override
        public void run() {
            state = 11;
            System.out.println("Exit Thread");
        }
    });

    t1.start();

    try {
        t1.join();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    System.out.println("exiting static block");
}

public static void main(String...strings) {
    System.out.println(state);
}
}

Когда я выполняю это в режиме отладки, тогда я мог видеть, как контроль достигает @ Переопределить public void run () { state = 11;

, но как только state = 11 выполняется, он просто зависает/блокирует. Я просмотрел разные сообщения в stackoverflow и подумал, что статические инициализаторы безопасны для потоков, но в этом случае jconsole должен сообщить об этом. О главном потоке, jconsole говорит, что он в состоянии ожидания, и это нормально. Но для потока, созданного в блоке статического инициализатора, jconsole говорит, что он находится в состоянии RUNNABLE и не заблокирован. Я в замешательстве и здесь не хватает какой-то концепции. Пожалуйста, помогите мне.

-121--885473- Как сравнить 2 таблицы данных У меня есть 2 таблицы данных, и я просто хочу знать, являются ли они одинаковыми или нет. Под «тем же самым» я имею в виду, что они имеют точно такое же количество строк с точно такими же данными в каждом столбце, или нет.

У меня есть 2 таблицы данных, и я просто хочу знать, являются ли они одинаковыми или нет. Под «одинаковыми» я имею в виду, что они имеют точно такое же количество строк с точно такими же данными в каждом столбце, или нет. Я бы хотел написать (найти) метод, который принимает обе таблицы и возвращает логическое значение.

Как таким образом сравнить 2 таблицы данных? Обе схемы имеют одинаковые схемы.

25
задан JDB 31 May 2013 в 18:24
поделиться