java final对象在这种情况下什么时候会被销毁?
我在一个方法内定义了一个final对象,然后这个final对象在方法内的一个异步回调的方法内调用!也就是说可能几十分钟后才会调用这个回调,会不会在回调前对象就被回收了?请...
我在一个方法内定义了一个final对象,然后这个final对象在方法内的一个异步回调的方法内调用!也就是说可能几十分钟后才会调用这个回调,会不会在回调前对象就被回收了?请慎重回答。先谢了
展开
展开全部
不会,Java使用的是GC(垃圾回收)机制,只有对象还有有效引用就不会被回收,举个栗子:
void Method()
{
final FooManager manager = new FooManager();
new AsyncTask(new AsyncTaskHandler()
{
@Override
public Object execute()
{
// A long long running...
return null;
}
@Override
public void onPostExecute()
{
manager.doXxx(); // 这里回调调用方法。
}
}).execute();
}
这个情况下,manager的对象被AsyncTaskHandler“捕捉”了,直到onPostExecute运行完之前,AsyncTaskHandler都会持有manager的有效引用,不会被GC清理掉。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询