您的位置:首页 > 编程语言 > Java开发

JAVA wait(), notify(),sleep使用

2015-05-30 11:24 405 查看
 需求:使用三线程同步模式,按顺序打印ABC ,循环10次,打印结果不混乱

public class Game implements Runnable {     

    

    private String name;     

    private Object prev;     

    private Object self;     

    

    private Game(String name, Object prev, Object self) {     

        this.name = name;     

        this.prev = prev;     

        this.self = self;     

    }     

    

    @Override    

    public void run() {     

        int count = 10;     

        while (count > 0) {     

            synchronized (prev) {    

                synchronized (self) {     

                    System.out.println(name);     

                    count--;  

                    try {

                    //必须加   不然有时顺序会乱
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}  

                  self.notify();     

                }     

                try {     

                    prev.wait();     

                } catch (InterruptedException e) {     

                    e.printStackTrace();     

                }     

            }     

    

        }     

    }     

    

    public static void main(String[] args) throws Exception {     

        Object a = new Object();     

        Object b = new Object();     

        Object c = new Object();   

        Game pa = new Game("A", b, a);   

        Game pb = new Game("B", c, b);   

        Game pc = new Game("C", a, c);  

    

        new Thread(pa).start(); 

        new Thread(pb).start();  

        new Thread(pc).start();  

        }     



  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: