看看下面的代码
class TacketSell implements Runnable
{
int tacket=100;
public void run()
{
while(true)
{
if(tacket>0)
{
System.out.println(Thread.currentThread().getName()+" tacket: "+tacket);
tacket--;
}
}
}
}
class  TacketSale
{
public static void main(String[] args) 
{
TacketSell TS=new TacketSell();
new Thread(TS).start();
new Thread(TS).start();
new Thread(TS).start();
new Thread(TS).start();
}
}
在main方法中创建了四个线程,这四个线程均能对TacketSell中的tacket实现修改(是这样的嘛?)
运行后,我预期的结果是tacket从100减为1的过程中,应该是四个线程对tacket进行了修改
可是运行结果只是第一个线程对tacket进行修改
不知道我描述清楚了没,知道的麻烦说下好吗?

解决方案 »

  1.   

    我是用Vista的操作系统
    是不是和系统有关系,麻烦知道的说下
      

  2.   

    while里面sleep一会就能看到多个线程交替调用了。
      

  3.   

    现在的CPU太快了,一闪就过去了,OS根本不用切换线程。
    每次ticket--完可以让它sleep一下(比如100ms)应该就能看出交替了
      

  4.   

    和CPU有关系,,单核,双核,四核的运行结果都不一样
      

  5.   

    感谢各位
    应该是和CPU有关系的
    按照7楼的朋友改了一下  看出切换来了
    再次感谢