标题:书上同步例子没有出现他说的错误
取消只看楼主
无尽的独白
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2011-8-3
结帖率:100%
已结贴  问题点数:10 回复次数:2 
书上同步例子没有出现他说的错误
第一次发帖不会弄
书上说延迟会出现的情况,我运行了没出现啊
·······
ticket=1
ticket=0
ticket=-1

代码:

class MyThread implements Runnable {
    private int ticket = 5;

    public void run() {
        for (int i = 0; i < 100; i++) {
            if (ticket > 0) {
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println(Thread.currentThread().getName() + "ticket="
                        + ticket--);

            }
        }
    }
}

public class SyncDemo01 {
    public static void main(String[] agrs) {
        Thread m1 = new Thread(new MyThread(), "一号窗");
        Thread m2 = new Thread(new MyThread(), "二号窗");
        Thread m3 = new Thread(new MyThread(), "三号窗");
        m1.start();
        m2.start();
        m3.start();
    }
}

谢谢各位啊,苦逼大学生自学java中。。。。。。。。
搜索更多相关主题的帖子: ticket private public 
2012-05-06 16:59
无尽的独白
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2011-8-3
得分:0 
我又改了一下
    private static int ticket = 5;

结果先出现0号票后出现1号票,这算问题吗
2012-05-06 17:09
无尽的独白
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2011-8-3
得分:0 
延迟是有 但是书上说会出现0和-1号票 然后用同步来改进 我好像知道错在哪了 我改的不对不用加static 错在我new了三个MyThread 他们不共享票 所以没有出错然后用同步也不好使 这样写就好了
程序代码:
public class SyncDemo01 {
    public static void main(String[] agrs) {

        MyThread t = new Mythread();                    //一个线程
        new Thread(t, "一号窗").start();
        new Thread(t, "二号窗").start();
        new Thread(t, "三号窗").start();
    

    }
}


哈哈很感谢你啊

2012-05-07 16:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-367066-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.797250 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved