一个多线程的问题

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之类的。
请高手解惑!
...全文
20 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgump 2003-02-25
  • 打赏
  • 举报
回复
一针见血,谢谢。
bluesmile979 2003-02-25
  • 打赏
  • 举报
回复
忘了结论了,所以56 78之类打不出来。
bluesmile979 2003-02-25
  • 打赏
  • 举报
回复
虽然你没有同步,但是println方法里面是有同步的,例:
public void println(boolean x) {
synchronized (this) {
//print
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧