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

急该怎么处理

2012-03-05 
急急急急急急急急急急QJ02.有如下测试synchronized关键字作用的程序,程序希望通过得到如下输出证明synchro

急急急急急急急急急急
QJ02.   有如下测试synchronized关键字作用的程序,程序希望通过得到如下输出证明synchronized代码块同时只能被一个线程访问。
但是现在程序的输出并不让人满意,请找出问题原因,并改正之。
希望得到的输出
A0
A1
A2
B0
B1
B2

程序代码

public   class   ThreadTest   implements   Runnable   {
public   void   run()   {
synchronized   (this)   {
for   (int   i   =   0;   i   <   3;   i++)   {
try   {
Thread.sleep(100);
}   catch   (InterruptedException   e)   {
e.printStackTrace();
}  
System.out.println(Thread.currentThread().getName()   +   i);
}
}
}
public   static   void   main(String[]   args)   {
Thread   ta   =   new   Thread(new   ThreadTest(),   "A ");
Thread   tb   =   new   Thread(new   ThreadTest(),   "B ");
ta.start();
tb.start();
}
}



[解决办法]
public class ThreadTest implements Runnable
{
public void run()
{
synchronized (this)
{
for (int i = 0; i < 3; i++)
{
// try
// {
// Thread.sleep(100);
// }
// catch (InterruptedException e)
// {
// e.printStackTrace();
// }
System.out.println(Thread.currentThread().getName() + i);
}
}
}

public static void main(String[] args)
{
Thread ta = new Thread(new ThreadTest(), "A ");
Thread tb = new Thread(new ThreadTest(), "B ");
ta.start();
tb.start();
}
}
Thread.sleep(100);把这个去掉,这个是让线程休眠,当A sleep后,自然就轮到B了。所以出现上面的结果。
[解决办法]
楼主,你不会答我出的题,问问倒也无妨,连我编的题号你都不改呀…… 无语了……

热点排行