java多线程调用一个方法的问题

打个比方有这样一个方法publicvoidpush(charc){data[index]=c;index++;}有可能第一个线程执行到data[index]=c的时候,c... 打个比方有这样一个方法
public void push(char c) {
data[index]=c;
index++;
}
有可能第一个线程执行到data[index]=c的时候,cpu便切换到第2个线程执行data[index]=c;
我的问题是
1.为什么线程不把这个方法里的所有语句都执行完再切换到别的线程呢?
2.是不是采用synchronized就可以避免这种情况?
3.有没有别的方法可以解决这种问题?
展开
 我来答
乁Freedom
推荐于2018-05-06 · TA获得超过2128个赞
知道小有建树答主
回答量:1580
采纳率:0%
帮助的人:1417万
展开全部
回答1:这个是由CPU的时间片分配决定的,CPU执行的是01代码,一个时间片内执行这么多个01代码,它不能保证能执行完你这个方法

回答2:是的,使用同步的话,就算第一个线程没有执行完,第二个线程想执行这个方法的话却发现被第一个线程锁住了这个方法,只能等第一个线程解锁它才能执行

回答3:我记得有一个关键字是放在变量的定义之前,这样表明这个变量是同步的,反正结果还是用同步
198901245631
推荐于2016-10-28 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1752万
展开全部
如果是想多个线程同时跑多次这段代码,那么每次创建一个线程,之后直接通过方法调用这段代码即可。
解释:java是多线程的,所以同时执行一段代码也是没问题的,会各自进行执行方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式