乙個例項中,多個synchronized方法的呼叫

2021-07-24 19:01:47 字數 1032 閱讀 3854

public class threada extends thread 

public void run()

}

public class threadb extends thread 

public void run()

}

public class run 

}

**如上所示,myobject類有兩個方法,分別建立兩個執行緒呼叫方法a和方法b:

1、方法a和方法b都沒有加synchronized關鍵字時,呼叫方法a的時候可進入方法b;

2、方法a加synchronized關鍵字而方法b沒有加時,呼叫方法a的時候可以進入方法b;

3、方法a和方法b都加了synchronized關鍵字時,呼叫方法a之後,必須等a執行完成才能進入方法b;

4、方法a和方法b都加了synchronized關鍵字時,且方法a加了wait()方法時,呼叫方法a的時候可以進入方法b;

5、方法a加了synchronized關鍵字,而方法b為static靜態方法時,呼叫方法a的時候可進入方法b;

6、方法a和方法b都是static靜態方法,且都加了synchronized關鍵字,則呼叫方法a之後,需要等a執行完成才能進入方法b;

7、方法a和方法b都是static靜態方法,且都加了synchronized關鍵字,建立不同的執行緒分別呼叫a和b,需要等a執行完成才能執行b(因為static方法是單例項的,a持有的是class鎖,class鎖可以對類的所有物件例項起作用)

總結:同乙個object中多個方法都加了synchronized關鍵字的時候,其中呼叫任意方法之後需等該方法執行完成才能呼叫其他方法,即同步的,阻塞的;

此結論同樣適用於對於object中使用synchronized(this)同步**塊的場景;

synchronized鎖定的都是當前物件!

乙個Tomcat執行多個例項

本文介紹在同乙個tomcat下執行mydomain.com和mysite.com這兩個例項的步驟。有時候,我們希望週期性的更新tomcat 有時候,我們又想統一管理安裝在一台機器上的tomcat 比如讓tomcat版本統一,讓多個例項的tomcat的依賴統 一 配置統一等 在這些場景下,我們都不希望...

乙個容器多個程序,乙個pod多個容器

乙個容器多個程序 在docker的映象編譯指令碼dockerfile中帶起多個程序,如下可以在contivnet.sh中啟動多個程序 from 192.168.1.2 5001 world centos7 ovs 2.6.4 1 copy bin contiv bin copy scripts co...

例項022多個類從乙個類繼承

module module1 public class 人員 private pname as string public property name as string getreturn pname end get set byval value as string pname name end...