у вас будет значение этой строки. увидеть этот код
цен ниже
public class Exct
{
Me m=new Me();
String s;
public static class Me
{
public String ht()
{
return "me";
}
}
public static void main(String ... args)
{
Exct c=new Exct();
try
{
System.out.println(c.call(c.m)+" in main");
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
public String call(final Me m) throws Exception
{
Thread t=new Thread()
{
public void run()
{
s=m.ht();
System.out.println(s+" in run");
}
};
t.start();
//System.out.println(s+" in run return ");
//t.sleep(1);
return s;
}
}
Вот вывод
IS-
нуля в главном меня в беге
, потому что, когда t.start() выполняет он будет искать метод выполнения, но из-за многопоточности функция Java, в то же время выполняются операторы return и возвращаемое значение null.
Теперь, если вы сделаете все, что может подождать нить до тех пор, пока не будет выполнен метод run, возвращаемое значение будет точным.мы можем сделать это, открыв эту печать строку, которая Null, но возврат выполняет через некоторое время или мы можем сделать что нить сон даже 1 секунду будет делать все остальное, и выход будет быть-
меня в перспективе меня в главном
прямо сейчас у меня нет никаких других объяснений, я буду обновлять его, когда найду любое другое хорошее решение.
Почему существует пустой блок catch для 'Exception e'? 1) Вы никогда не должны просто перехватывать все исключения. 2) Вы должны по крайней мере вывести что-то, чтобы указать, что произошло исключение. – skiwi
В чем проблема? Он работает прямо здесь. Можете ли вы дать нам код «MyCustomObj»? И, пожалуйста, отобразите трассировку стека. – Happy
убедитесь, что вы правильно инициализировали перед отправкой метода – stinepike