java多线程问题

多个线程调用同一个对象的同一个方法没有任何更改全局变量的步骤请问方法里面产生的局部变量也会有线程安全问题吗... 多个线程调用同一个对象的同一个方法 没有任何更改全局变量的步骤 请问方法里面产生的局部变量也会有线程安全问题吗 展开
 我来答
来自巢湖敬老慈幼的风车草
2013-04-02 · TA获得超过207个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:118万
展开全部
存在栈里面的数据肯定是线程安全的,像方法中定义的int, short, long, byte, float, double, boolean, char,String等不存在线程安全问题。
如果存在堆中则令当别论。
因为堆中存放对象,方法中根据引用来调用这些对象。如果这个方法产生的对象把引用给了多个线程,则会存在线程安全的问题。像 单例模式。
但如果仅仅在方法中自行生成,比如方法中有person person=new person();
这个方法每执行一次,则会重新创建一个对象在堆中,则不存在线程安全问题
百度网友1a812615e
2013-04-02 · TA获得超过1146个赞
知道小有建树答主
回答量:739
采纳率:66%
帮助的人:437万
展开全部
没有,因为每个线程都有一个栈空间,而方法中的局部变量是存在线程的栈空间的,所以多个线程不会有印象.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Stale331x
2013-04-02 · TA获得超过1299个赞
知道小有建树答主
回答量:1276
采纳率:33%
帮助的人:862万
展开全部

bu hui.

你可以再你的方法里面加上

你可以通过测试以下方法看看

public void method(int j){
int i=j;
try{
System.out.println("i="+i);
Thread.sleep(500);
System.out.println("i="+i);
}catch(Exception ex){
}
}

在你生成的线程中,你可以让两个线程在调用start()方法之间的时间,sleep(200);

也就是说:

try{
MyThread t1=new MyThread();
new Thread(t1).start();
Thread.sleep(200);
MyThread t2=new MyThread();
new Thread(t2).start();
}catch(Exception ex){
}
当然了,你要自己在run方法里面调用我上面的method方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式