解决方案 »

  1.   

     个人浅见,仅供参考:
    这是虚拟机对线程的随机调度造成的。两个线程启动后,虚拟机会随机调度。
    就楼主这个结果,很可能是:personTwo线程获得运行时间,进入第一次循环,给str追加了"李四",这时时间到了,personOne获得运行时间,进入第一次循环,追加str,使其变成了“李四,张三”,这时还没等输出结果,时间又到了,personTwo 又获得了运行时间,输出“我是李四,字符串为:李四,张三,”,之后,personOne又得到运行时间,输出 “我是张三,字符串为:李四,张三,”。
    多运行几次,还会有多种情况。
      

  2.   

    楼主,你的本意是不是:this.str=new StringBuffer(str.ToString);
      

  3.   

    我在itbegin平台上运行结果如下:

    线程调度是按CPU的,随机的,每次的结果也不一样。这个程序的输出问题是没有的。
    你可以比较一下我的输出。