Java同步機制總結--synchronized關鍵字的使用
不久前用到了同步,現在回過頭來對JAVA中的同步做個總結,以對前段時間工作的總結和自我技術的條理話。
JAVA中synchronized關鍵字能夠作為函數的修飾符,也可作為函數內的語句,也就是平時說的同步方法和同步語句塊。
假如再細的分類,synchronized可作用于
instance變量、
object reference(對象引用)、
static函數、
class literals(類名稱字面常量)身上。
在進一步闡述之前,我們需要明確幾點:
接著來討論synchronized用到不同地方對代碼產生的影響:
1. 把synchronized當作函數修飾符時,示例代碼如下:
Public synchronized void method(){
//….
}
public void method()
{
synchronized (this) // (1)
{
//…..
}
}
2.同步塊,示例代碼如下:
public void method(SomeObject so) {
synchronized(so)
{
//…..
}
}
class Foo implements Runnable
{
private byte[] lock = new byte[0]; // 特別的instance變量
Public void method()
{
synchronized(lock) { //… }
}
//…..
}
3.將synchronized作用于static 函數,示例代碼如下:
Class Foo
{
public synchronized static void method1() // 同步的static 函數
{
//….
}
public void method2()
{
synchronized(Foo.class) // class literal(類名稱字面常量)
}
}
小結如下:
更有一些技巧能夠讓我們對共享資源的同步訪問更加安全:
Java 任務調度
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。