java多线程,每个线程中new同一个类,生成的对象相同,这是为何,这会造成共享变量的问题吧 20
7个回答
展开全部
是软件的问题么,为什么我写了跟你一样的代码,我的就不会出现这种问题
package test2;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class test2_test5 {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0;i < 5;i++) {
executorService.execute(
new Runnable() {
@Override
public void run() {
Object o = new Object();
System.out.println(o);
}
}
);
}
executorService.shutdown();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我认为不是生成了相同对象,而是多个线程同时打印的话,s变量的值有可能还没来得及更新,打印的是更新前的值。
为了证明确实是产生了不同变量,你可以把每个s.toString()的字符串保存进一个列表,最后看列表的个数是不是5。
为了证明确实是产生了不同变量,你可以把每个s.toString()的字符串保存进一个列表,最后看列表的个数是不是5。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不应该啊。我用你的代码,设置线程池20个。运行了很多次,obj也没有重复啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
理论上不会的,如果遇到特定情况,系统判定你这个对象没人使用的情况下,可能会指向给下一个new! 这是个内部机制问题!得去翻源代码 累死!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询