当前位置: 代码迷 >> Java相关 >> 生手第一次发帖,关于线程,求解答
  详细解决方案

生手第一次发帖,关于线程,求解答

热度:23   发布时间:2016-04-22 19:43:02.0
新手第一次发帖,关于线程,求解答
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的值。
 
  相关解决方案