哲學家就餐導致死鎖(Java實現)

有五個哲學家,他們的生活方式是交替地進行思考和進餐。他們共用一張圓桌,分別坐在五張椅子上。

在圓桌上有五個碗和五支筷子,平時一個哲學家進行思考,飢餓時便試圖取用其左、右最靠近他的筷子,只有在他拿到兩支筷子時才能進餐。進餐完畢,放下筷子又繼續思考。

public class day01 {
    private static String s1="筷子左";
    private static String s2="筷子右";
    public static void main(String[] args){

        new Thread(){
            public void run(){
                while (true){
                    synchronized (s1){
                        System.out.println(getName()+"獲取"+s1+"等待"+s2);
                        synchronized (s2){
                            System.out.println(getName()+"拿到"+s2+"開喫");
                        }
                    }
                }
            }
        }.start();

        new Thread(){
            public void run(){
                while (true){
                    synchronized (s2){
                        System.out.println(getName()+"獲取"+s2+"等待"+s1);
                        synchronized (s1){
                            System.out.println(getName()+"拿到"+s1+"開喫");
                        }
                    }
                }
            }
        }.start();


    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章