本帖最后由 郭宁 于 2012-5-18 01:01 编辑
- class Ticker implements Runnable{
- private int tick = 20; //这里加不加 static 多次运行就会出现 售出了两个 20
- //按我的思想 在 main函数中创建线程 传的都是 t1 这里不用静态就可以了吧
- // Thread th1 = new Thread(t1);
- // Thread th2 = new Thread(t1);
- @Override
- public void run() {
- // TODO Auto-generated method stub
- while(true)
- {
- if(tick > 0)
- {
- System.out.println(Thread.currentThread().getName()+"售出:"+tick--);
- // 若把输出语句改成下面,多次运行 会出现如下结果:售出了一个 0号票,没有售出 2号票
- // System.out.println(Thread.currentThread().getName()+"售出:"+tick);
- // tick--;
-
- // Thread-0售出:20
- // Thread-1售出:20
- // Thread-0售出:19
- // Thread-1售出:18
- // Thread-0售出:17
- // Thread-1售出:16
- // Thread-0售出:15
- // Thread-0售出:13
- // Thread-0售出:12
- // Thread-0售出:11
- // Thread-0售出:10
- // Thread-0售出:9
- // Thread-0售出:8
- // Thread-0售出:7
- // Thread-0售出:6
- // Thread-0售出:5
- // Thread-0售出:4
- // Thread-1售出:14
- // Thread-0售出:3
- // Thread-0售出:1
- // 票已售完!!
- // Thread-1售出:0
- // 票已售完!!
-
- }
- else
- {
- System.out.println("票已售完!!");
- break;
- }
- }
- }
-
- }
- public class TickerDemo{
- public static void main(String[] args)
- {
- Ticker t1 = new Ticker();
-
- Thread th1 = new Thread(t1);
- Thread th2 = new Thread(t1);
- th1.start();
- th2.start();
- }
- }
复制代码 问题都在代码里面~ 求高人指点一下为何会出现这种情况!! |
|