加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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并且正确地放置在具有自己的线程堆栈的堆上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读