有关线程的莫名其秒问题

写东西的时候碰到这种情况:有两个线程类,ThreadA,ThreadB,现在运行ThreadA输出A,运行ThreadB输出B。但是我现在在另一个类Test里写这样的东西为什么输出的就不是A,B了?
public class{
public static void main(String[]args){
ThreadA a = new ThreadA();
Thread ta = new Thread(a);
ta.start();
ThreadB b = new ThreadB();
Thread tb = new Thread(b);
tb.start();
}
}
不知道是为什么?就是想问一下什么情况下可能出现这种情况?

你的ExceptionMonitor 和 NormalMonitor 是不是有相同的父类,而父类里有共享的变量,如果有父类,你把父类检查一下,或者贴出来,帮你看看。
注意有些JDK的类不是多线程安全的,你要参考一下API说明

lz 能否把线程代码贴出来

输出的是B,A?

线程的执行顺序是不可预测,即使先调用a.start,后调用b.start,也是有可能先执行b的run方法,后执行a的run方法,线程的调度方式一要看虚拟机实现,二要看操作系统的调度算法

那你 TheadA这个里面有main方法可以直接运行吧,你看一下。

[quote]可以运行,就是输出内容不一样了 [/quote]
晕,我是说你的A里面肯定有个Main方法,执行的是不同的程序。

你看一下A里面的main方法的代码,不同代码肯定执行不一样的咯。

1,打出来哪里不一样啊
2,ExceptionMonitor这个玩意呢

你在A里面运行 是运行的normalMonitor里面的run方法啊,肯定不同啊。

[quote]但是放到一块他两输出的内容就变了。 [/quote]那你想打印出来的结果是什么?