java的简单问题
class Text
{
public static void main(String[] args)
{
Queue q=new Queue();
Producer p=new Producer(q);
Consumer c=new Consumer(q);
p.start();
c.start();
}
}
class Producer extends Thread
{
Queue q;
Producer(Queue q)
{
this.q=q;
}
public void run()
{
for (int i=0;i<10;i++)
{
q.put(i);
System.out.println("Producer put"+i );
}
}
}
class Consumer extends Thread
{
Queue q;
Consumer(Queue q)
{
this.q=q;
}
public void run()
{
while(true)
{
System.out.println("Consumer get"+q.get());
}
}
}
class Queue
{
int value;
public void put (int i)
{
value=i;
}
public int get()
{
return value;
}
}
结果应该是 012345678999999999999999……
为什么是这样的C:\Documents and Settings\Administrator>java Text
Producer put0
Producer put1
Producer put2
Producer put3
Producer put4
Producer put5
Producer put6
Producer put7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Consumer get7
Producer put8
Producer put9
Consumer get9
Consumer get9
Consumer get9
Consumer get9
Consumer get9
Consumer get9
Consumer get9
Consumer get9
Consumer get9
Consumer get9
Consumer get9
Consumer get9
Consumer get9有很多个7呢 怎么回事
参考答案:我觉得是
我在自己机子上试过
发现有很多 consumer get 6
这可能是随机的
因为两个线程没同步
可能有许多种情况
你再跑一遍,情况可能又不一样了