Создать поток одноэлементного класса, используя ExecutorService.submit () в самом конструкторе? - PullRequest
0 голосов
/ 19 января 2019

У меня есть класс, который по природе является Singelton и реализует Callable Interface.Ожидается, что я должен запустить поток этого синглтон-класса, как только он будет создан.Попытался сделать это в конструкторе, статическом блоке, блоке конструктора, но я получаю ExceptionInInitializerError, потому что я думаю, что объект не был создан до этого времени.Кто-нибудь может подсказать мне, как это сделать?

Структура класса ниже

interface X implements Callable<Object>{
    void metho1();
}

class A implements X{

    private Map<String, String> map = new HashMap<>();

    private ExecutorService executor = Executors.newFixedThreadPool(1);

    private static A a = new A();

    public static A getA(){
        return a;
    }

    private A()
    {
        //Obiously will not work because by the time I reach here 'a' is not instantiataed
        executor.submit(getA());
    }

    static{
        //This also does not work
        executor.submit(getA());
    }

    @Override
    public Object call()
    {
         //Do something
    }

    @Override
    public void metho1(){
         //Do something
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...