死鎖程序(面試題)

死鎖:就是同步中嵌套同步,兩個同步都想要先運行,互不相讓,致使程序無法運行。

                                                                   一個死鎖程序

 class Test

{

      private boolean flag;

    Test(boolean flag)

       {

           this.flag=flag;

       }

     public void run()

       {

             if(flag)

             while(true)

             {

               synchronized(mylock.locka)

                      {

                           System.out.println("if lock" );

                             synchronized(mylock.lockb)

                                  {

                                        System.out.println("if lockb");

                                  }

                       }

             }

       }

        else

         {

                 while(true)

                       {

                                               synchorized(mylock.lockb)

                                   {

                                           System.out.println("else lockb");

                                           synchronized(mylock.locka)

                                               {

                                                          System.out.println("else locka")

                                                }

                                    }

                        }

         }

}           

     class  mylock

{

      static object locka = new object();

     static object lockb = new object();

}

    class DemolockTest

{

     public static void main (string[] args)

       {

            Thread t1 = new Thread(new Test(true));

            Thread t2 = new Thread(new Test(flase));

             t1.start();

             t2.start();

        }

}

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