一个多线程的问题

zgump 2003-02-25 01:06:15
代码如下:
class s implements Runnable{
int x=0,y=0;
int addX(){x++; return x;}
int addY(){y++; return y;}
public void run()
{
for(int i=0;i<10;i++)
System.out.println(addX()+""+addY());
}
public static void main(String args[])
{
s run=new s();
Thread[] t = new Thread[10];
for ( int i = 0; i < 10; i++ ){
t[i]=new Thread(run);
t[i].start();
}
}
}

这个程序输出的结果是11 22 33 之类的。但是我觉得中断可以发生在
System.out.println(addX()+""+addY());中addX()之后,这样就有可能
输出两个不同的值,如56 78之类的。
请高手解惑!
...全文
4 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zgump 2003-02-25
一针见血,谢谢。
回复
bluesmile979 2003-02-25
忘了结论了,所以56 78之类打不出来。
回复
bluesmile979 2003-02-25
虽然你没有同步,但是println方法里面是有同步的,例:
public void println(boolean x) {
synchronized (this) {
//print
}
}
回复
发帖
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2003-02-25 01:06
社区公告
暂无公告