免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1915 | 回复: 1
打印 上一主题 下一主题

请教一个线程问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-29 11:07 |只看该作者 |倒序浏览
public class Machine implements Runnable{
       
        private int a=1;
       
        public void run()
        {
                for(int i=1; i<30;i++)
                {
                        a+=i;
                        Thread.yield();
                        a-=i;
                       
                        System.out.println(a);
                }
        }
       
        public static void main(String args[])throws InterruptedException{
               
                Machine machine = new Machine();
                Thread t1       = new Thread(machine);
                Thread t2       = new Thread(machine);
                t1.start();
            t2.start();
        }
         
         
}
  其中一种输出
1
1
3
4
4
5
5
1
1
1
1
8
1
1
9
1
1
1
1
1
1
1
1
1
14
15
1
1
1
1
1
18
1
1
1
1
1
1
21
1
1
1
1
24
1
24
26
1
25
1
26
1
27
1
1
1
1
1
想不通,每次输出的结果会不一样的,而且这些1是怎么来的?谢谢大家帮我看下

论坛徽章:
0
2 [报告]
发表于 2008-10-29 11:43 |只看该作者
感觉有同步问题

                        a+=i;
                        Thread.yield();
                        a-=i;

做完之后a还是1
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP