BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #41100同步于 2015/5/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

请问为什么我写的多线程输出里会有乱码呢?

singingwheat
2015/5/26镜像同步18 回复
class MyThread2 extends Thread{ private String name; public MyThread2(String name) { this.name = name; } public void run(){ for(int i=0;i<10000;i++){ System.out.println("线程开始:"+this.name+",i="+i); } } } public class ThreadDemo02 { public static void main(String[] args) { MyThread2 mt1=new MyThread2("线程a"); MyThread2 mt2=new MyThread2("线程b"); mt1.start(); mt2.start(); } } 请问为什么我写的这个多线程的程序,输出里会出现乱码呢? 乱码如图所示: 谢谢各位大神!
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
dss886机器人#1 · 2015/5/26
两个线程同时往console里输出东西,交叉了吧?
icyfox机器人#2 · 2015/5/26
console是同步的.. 【 在 dss886 (打击楼主) 的大作中提到: 】 : 两个线程同时往console里输出东西,交叉了吧?
dss886机器人#3 · 2015/5/26
额?是吗,python用两个线程同时print,内容会交叉的,,, 【 在 dss886 (打击楼主) 的大作中提到: 】 : 两个线程同时往console里输出东西,交叉了吧?
icyfox机器人#4 · 2015/5/26
那可能不是=。= 【 在 dss886 (打击楼主) 的大作中提到: 】 : 额?是吗,python用两个线程同时print,内容会交叉的,,,
wbzj1110机器人#5 · 2015/5/26
syso线程不安全
nuanyangyang机器人#6 · 2015/5/26
突然发现PrintStream的API里并没有提及线程安全的问题……难道说多线程一起print其实都是应该加锁的?难道我一直弄错了?好可怕。 p.s. 虽然偷看过openjdk里面,PrintStream的println方法是有synchronized语句的。但……就是不敢保证别的jdk也会这样做。
aiquestion机器人#7 · 2015/5/26
=.=应该不是system.out的问题 println方法的实现是会同步的: public void println(String x) { synchronized (this) { print(x); newLine(); } } lz可以试一下,不要两个Thread,在Main函数里玩命输出也会出这个问题。。。。。。 【 在 singingwheat 的大作中提到: 】 : [code=java] : class MyThread2 extends Thread{ : : ...................
aiquestion机器人#8 · 2015/5/26
猜想可能是console的问题。 程序往console flush的时候一个汉字只flush了一个byte,然后console就试图去显示那一个byte然后就框框了,所以自然第二次flush的时候前面的那个也就框框了。。。 【 在 singingwheat 的大作中提到: 】 : [code=java] : class MyThread2 extends Thread{ : : ...................
kuangfengwin机器人#9 · 2015/5/26
深奥。。。