首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java面试 >

倾尽技术分相问:为何这两段代码输出不一样?为什么

2013-07-09 
倾尽技术分相问:为什么这两段代码输出不一样?为什么?package multhreadpublic class SynThreadTest exten

倾尽技术分相问:为什么这两段代码输出不一样?为什么?

package multhread;

public class SynThreadTest extends Thread {

public static int count = 1;

public synchronized void run()
{
//synchronized(this)
{
for(int i=0;i<10;i++)
System.out.println(" " + i);
}
}
public static void main(String[] args)
{
SynThreadTest test1 = new SynThreadTest();
SynThreadTest test2 = new SynThreadTest();

Thread t1 = new Thread(test1,"test1");
Thread t2 = new Thread(test2,"test2");

t1.start();
t2.start();
//test1.start();
//test2.start();
}
}


代码段1: synchronized 修饰的是run函数。

输出结果为01234567890123456789

如果让其修饰 for 循环,输出则会变成:
00112233445566778899
[解决办法]
结果是一样的,除非你这么修改:
        Thread t1 = new Thread(test1,"test1");
        Thread t2 = new Thread(test1,"test2");
此时,因为是同一个对象,锁才生效的。

热点排行