synchronized

synchronized的兩種用法(本質鎖的)都是對象

示例代碼:

public class TestSychronized {

    public static void main(String[] args) {
        new Thread(new TH()).start();
        new Thread(new TH()).start();
    }


}
class TH implements Runnable{
    private static Cat cat=new Cat();
    @Override
    public void run() {
        cat.test();
        
    }
    
}
class Cat{

 //第一種,所的是調用此方法的對象

   public synchronized  void test(){    
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("11111");
    }

//第二種,鎖的直接是括號裏面的對象

       public  void test(){    
        synchronized(Object.class//this(this依然指的是調用此方法的對象本身)){
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("11111");
        }    
    } 
}



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