class ThreadTest2
{
public static void main(String[] args)
{
new Thread(new Thread1("Thread1")).start();
new Thread(new Thread1("Thread2")).start();
}
}
class Thread1 implements Runnable
{
private String name;
private static int tit = 100;
public Thread1(String name) {
this.name = name;
}
public String getName(){
return this.name;
}
public void run() {
while(tit>0) {
synchronized(new Object()) {
System.out.println(this.getName()+"___"+tit--);
}
}
}
}

为什么最后输出那行会不按序输出,求解答,谢谢!
------解决思路----------------------
synchronized(new Object()) 这个同步块是不好用的,因为tit是类成员,同步块要synchronized(Thread1.class)才能工作
所以上边的代码就不是同步的,线程可能在执行System.out.println(this.getName()+"___"+tit--)的过程中被调度走。
楼主可以试试多建几个线程,控制台输出的末尾一定是每个线程输出一行,输出的数字就是线程最后一次被调度时tit的值。