內建類和物件鎖改變 筆記記錄

2021-08-10 22:35:02 字數 1268 閱讀 4159

當內建類是私有的,若例項化該類與內建類 在乙個包下可以例項化。若不在乙個包下要例項化,需要將內建類改為public

package com.inner;

public class publicclass

public void setage(string age)

public string getaddress()

public void setaddress(string address)

}public string getusername()

public void setusername(string username)

public string getpassword()

public void setpassword(string password)

}package com.test;

import com.inner.publicclass;

import com.inner.publicclass.privateclass;

public class run

}當內建類為靜態內建類時 不需要在使用publicclass.new privateclass() 例項化privateclass  因為靜態變數 靜態內建類都屬於類所有,不屬於物件所有。

物件鎖改變:當開始執行時所有執行緒爭奪同乙個物件鎖,執行緒同步,若兩個執行緒由於所物件的改變,並不是爭奪的同乙個鎖的時候執行緒非同步。

package com.inner;

public class myservice catch(interruptedexception e)}}

}package com.inner;

public class threada extends thread

public void run()

}package com.inner;

public class threadb extends thread

public void run()

}package com.inner;

public class run catch(interruptedexception e)*/

thread2.start();}}

如果不加延時,兩個執行緒幾乎同時執行,爭奪同乙個物件,假若執行緒a拿到了該物件鎖,即使在執行過程中lock="456" lock 改變了,但是執行緒2是等著執行緒a釋放掉「123」的物件鎖,如果加延時,執行緒a先執行,當執行到lock="456"時,執行緒b其實是得到物件「456」的鎖。物件不一樣因此非同步。

類鎖和物件鎖

物件鎖 當乙個物件中有synchronized method或synchronized block的時候呼叫此物件的同步方法或進入其同步區域時,就必須先獲得物件鎖。如果此物件的物件鎖已被其他呼叫者占用,則需要等待此鎖被釋放 同步靜態方法 靜態變數互斥體 由於乙個class不論被例項化多少次,其中的靜...

類鎖和物件鎖

類鎖 和 物件鎖 1.類鎖 先定義這麼乙個類 classt synchronized static methoda 那麼 例項化兩個物件之後 classt a classt b 在這兩個物件呼叫methoda時,第乙個呼叫的會得到classt類的類鎖,第二個呼叫的要等到第乙個呼叫結束後釋放鎖,才能完...

類鎖和物件鎖的詳解

最近在面試中遇到很多關於多執行緒的問題,特別是鎖的應用,現在我就來說說類鎖和物件鎖。物件鎖 synchronized method 和類鎖 static sychronized method 的區別 物件鎖也叫例項鎖,對應synchronized關鍵字,當多個執行緒訪問多個例項時,它們互不干擾,每個...