java的简单问题

王朝知道·作者佚名  2009-06-30
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

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

这可能是随机的

因为两个线程没同步

可能有许多种情况

你再跑一遍,情况可能又不一样了

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航