java中鎖物件本身是可以修改的

2021-08-30 23:02:48 字數 624 閱讀 4559

private int color;

public int getcolor()

//終止於這步

public synchroized void setcolor(int color)

}

public class testdeadlock implements runnable

public void run() catch (interruptedexception e)

o2.setcolor(8); //發生死鎖

system.out.println("2:" + o2.getcolor());}}

if(flag == 0)}}

}}

,則輸出如下:

1:32:8t2 succeed

當該方法前有synchronized

,則構成了死鎖。

由此可見:

(1)鎖物件本身是可以修改的。

(2)當給乙個方法前加上synchronized

,則相當於synchronized

(該方法所屬的物件)。

(3)synchronized(鎖)

該語句會判斷這個鎖是否在某處已用,如果用,那麼就阻塞當前執行緒。

Java類鎖和物件鎖實踐

一 前言 1.類鎖 在 中的方法上加了static和synchronized的鎖,或者synchronized class 的 段,如下文中的increament 2.物件鎖 在 中的方法上加了synchronized的鎖,或者synchronized this 的 段,如下文中的synonmeth...

java的物件鎖和類鎖

類鎖 在 中的方法上加了static和synchronized的鎖,或者synchronized class 物件鎖 在 中的方法上加了synchronized的鎖,或者synchronized this 的 段 方法鎖和私有鎖 都屬於物件鎖 私有鎖 在類內部宣告乙個私有屬性如private obj...

java測試父子類中的鎖物件

本來想測試一下子類中呼叫父類方法,如果都是同步方法,鎖物件是否相同。後來還發現很多理解不夠深入的地方,一起寫 測試了一下。測試鎖物件 class father synchronized void doy override public string tostring public class son...