日期:2014-05-20  浏览次数:20734 次

java 求助 关于线程的同步问题
class myThread extends Thread{

public static boolean b = false;

public void run()
{
for(int i=0;i<10;i++)
{
if(Thread.currentThread().getName().equals("Thread-0") && b == true)
{
System.out.print("消耗者\t");
b = false;


}
if(Thread.currentThread().getName().equals("Thread-1") && b == false)
{
System.out.print("生产者\t");
b = true;
}

//System.out.println(Thread.currentThread().getName() + " " + i);
}

}
}


public class test{


public static void main(String[] args)
{

myThread m1 = new myThread();
myThread m2 = new myThread();

m1.start();
m2.start();
}

}




问题一: 我这样写关于线程的同步思路对不对?
问题二: //System.out.println(Thread.currentThread().getName() + " " + i); 为什么把这行注释掉之后只打印出一行生产者?

------解决方案--------------------
探讨

对于第二个问题,原来是加了那条语句之后,线程的执行时间变长,所以程序要两条线程之间有足够的时间去切换。