对象创建为局部变量

 甜甜deX 发布于 2023-02-11 11:40

我一直在阅读,我发现无论在代码上创建对象,例如成员变量,局部变量或类变量,它们总是在Java中的堆空间内创建.我想知道在这个例子中ArrayList,执行时创建的doSomething()是否会在生成并发问题的线程之间共享,或者在堆中创建两个不同的实例.

public ArrayList doSomething(){
    ArrayList list = new ArrayList<>();
    //...Add content to the list
    return list;
}

public void printList(ArrayList list){
    for(T element: list)
        System.out.println(element);
}

Thread thread1 = new Thread(new Runnable{
      public void run(){
           printList(doSomething());
      }
}

Thread thread2 = new Thread(new Runnable{
      public void run(){
           printList(doSomething());
      }
}

thread1.start();
thread2.start();

albusshin.. 5

在这段代码中

public ArrayList doSomething(){
    ArrayList list = new ArrayList<>();
    //...Add content to the list
    return list;
}

thread1.start();
thread2.start();

你创建了两个ArrayLists,因此两个线程之间不会有任何"共享",因为它们完全是两个不同的对象.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有