java – 使用Thread分配内存
发布时间:2020-12-15 05:23:35 所属栏目:Java 来源:网络整理
导读:我想知道如果在方法中声明一个本地线程会发生什么?通常,函数返回后,所有局部变量都将消失,因为它们都在Stack上分配.然而,似乎本地线程将是一个不同的故事.是对的吗? public int A() { Thread t = new Thread() { doSomething(); } t.start(); return -1; }
我想知道如果在方法中声明一个本地线程会发生什么?通常,函数返回后,所有局部变量都将消失,因为它们都在Stack上分配.然而,似乎本地线程将是一个不同的故事.是对的吗?
public int A() { Thread t = new Thread() { doSomething(); } t.start(); return -1; } 解决方法
线程是它自己的GC根.因此,无论何时创建线程,无论其创建上下文如何,在其运行方法完成之前,它都不会准备好GC.即使本地方法完成且线程仍处于活动状态,也是如此.
例: public void doSomeAsync(){ Thread th = new Thread(new Runnable(){ public void run(){ Thread.sleep(500); } }); th.start(); //do something else quickly } //在快速执行某些其他操作之后,将任何未解除该方法的定义标记为GC.线程th将不会被标记为GC并且正确地放置在具有自己的线程堆栈的堆上. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |