Я хотел бы знать, является ли плохая идея вызывать метод блокировки из самого конструктора.Вызов метода блокировки из конструктора - Java
Мне любопытно узнать, есть ли у нас какие-либо рекомендации/правила в таком сценарии, что мы никогда не должны вызывать методы блокировки в Constructor.
В основном я пытаюсь сделать это:
class A
{
// Many instance variables that is to be initialized on instantiaion
String tempVar = null;
public A()
{
// Initialize all the instance variables
tempVar=objectClassB.**callBlockingMethod**(); // this method call would return
// some data from ClassB Object
}
public static void main(String args ...)
{
A a = new A();
// Or should I call the blocking method call only after instantiation according
// to any guidelines of Java pertaining to performance ?
// IMPORTANT: It's only when the blocked method returns value , should the main
// thread proceed as the object 'a' would be sent for further processing
}
}
PS: Да, я извиняюсь, если мой вопрос звучит очень простой.
Пожалуйста, определите здесь «блокировку» - вы ожидаете, что он займет неопределенное количество времени? Обычно конструкторы должны быть довольно простыми - вы бы не хотели, чтобы цикл навсегда слушал TCP-соединения, например ... но это нормально, чтобы сделать некоторые вызовы методов. –
Привет @JonSkeet, Большое спасибо за ваш быстрый ответ. Да, я имел в виду «Блокирование» здесь в том же смысле, что и вы упомянули. Я пытаюсь слушать входящее соединение через bluetooth и инициализировать переменную «соединение» по возвращаемому значению вызова метода блокировки. Чтобы быть предельно ясным, я пытаюсь это сделать: StreamConnection con = notifier.acceptAndOpen(); -> in constructor // где notifier == типа StreamConnectionNotifier – Chandru