1. 程式人生 > >synchronized實現同步的三種用法

synchronized實現同步的三種用法

1:對於普通同步方法,鎖的是當前例項的物件。

意思是

class A {
	synchronized test(){
	system.out.print("lock object");
	}
	}
	
A a = new A();
A a1 = new A();
a.test();
這個時候鎖住的是a.然而a1並不會被鎖住。

2:對於靜態同步方法,鎖的則是當前類的class物件。

意思是

class A {
	static synchronized test(){
	system.out.print("lock object");
	}
	}
	
A a = new A();
A a1 = new A();
a.test();
這個時候鎖住的是整個A的class,a1也被鎖住了。

3:對於同步方法塊,鎖住的是synchonized括號內配置的物件。

class A{
	
	test(A a){
	synchronized(a){
		a=new A();
	}
}
}
這個就是鎖的物件a,

A a =new A();

A a1 =new A();

a.test(a1);

這實際上鎖的是a1 這個物件。

相關推薦

synchronized實現同步用法

1:對於普通同步方法,鎖的是當前例項的物件。 意思是 class A { synchronized test(){ system.out.print("lock object"); } } A a = new A();A a1 = new A();a.test(

Java多線程實現方式

get() warning 三種方式 方式 緩存 運行 了解 ren ava Java多線程實現方式主要有三種:繼承Thread類、實現Runnable接口、使用ExecutorService、Callable、Future實現有返回結果的多線程。其中前兩種方式線程執行完後

前端動畫效果實現方式

near 動畫效果 timeout css屬性 轉移 動畫 sla 三種方式 內存 第一種,js中setTimeout和setintervel,把動畫元素設置position:absalute,然後操作left、top來移動。此種方法內存消耗大,顯示效果差,不推薦。 第二種

C#中“?”有用法

c 1、可空類型修飾符(?):引用類型可以使用空引用表示一個不存在的值,而值類型通常不能表示為空,例如:string str=null;是正確的。int i=null;編譯器將報錯。為了使值類型也可為空,可空類型出現了,可空類型使用可空類型修飾符?來表示,表現形式為T?。例:int?表示是可空的整形,Date

format的用法

print 用法 format for pos name bsp ike div 1,類似格式話輸出的占位符s%. #print(‘my name is {} ,I like {} ‘,format(‘xiong‘,‘reading‘)) 2, #print(‘{0}

集群應用Session一致性實現方案

tar lan cnblogs htm ever ref blank post .cn 轉自:http://blog.csdn.net/zwx521515/article/details/78679679    https://www.cnblogs.com/study-e

mybatis 中 foreach collection的用法

app key bsp arr onf array數組 自己 構建 符號 轉載:http://blog.sina.com.cn/s/blog_b0d90e8c0102v1q1.html 傳參參考:http://www.cnblogs.com/ruiati/p/6410339

php部分--session的用法

-s emp AD 用戶 method 登錄頁面 sel new 判斷 一.在不同頁面之間顯示用戶的信息 二.控制登錄 1.登錄頁面 <body><form action="loginchuli.php" method="post"> &l

JAVA中this的用法的詳解

enc 所有 其它 println 用途 詳細介紹 示例 一次 調用構造   this關鍵字必須放在非靜態方法裏面 this關鍵字代表自身,在程序中主要的使用用途有以下幾個方面:    使用this關鍵字引用成員變量    使用this關鍵字在自身構造方法內部引用其它構造方

單例模式實現方式

初始化 實例 得到 assm ini 0.10 文件中 base cal 1、什麽是單例模式 單例模式:基於某種方法實例化多次得到實例是同一個2、為何用單例模式 當實例化多次得到的對象中存放的屬性都一樣的情況,應該將多個對象指向同一個內存,即同一個實例3、如何用

SQL、LINQ、Lambda 用法

.class decimal start tostring 時報 主鍵 demo image 返回 查詢Student表中的所有記錄的Sname、Ssex和Class列 select sname,ssex,class from student Linq: from

foreach中collection的用法

tor 不同 多個 list() new lis fin pre href 轉載:http://blog.sina.com.cn/s/blog_b0d90e8c0102v1q1.html 傳參參考:http://www.cnblogs.com/ruiati/p/641033

sql92查詢與sql99查詢實現方式(講義)

--SQL92&SQL99實現三表聯合查詢 --建立city表:使用圖形操作即可 --給city表新增測試資料 insert into city values(1,'商丘','歷史聞名古都'); insert into city values(2,'邯鄲','歷史聞名

synchronized實現原始碼出售原理

一、synchronized用法 Java中的快三原始碼出售QQ2952777280【話仙原始碼論壇】hxforum.com 同步塊用synchronized標記。 同步塊在Java中是同步在某個物件上(監視器物件)。 所有同步在一個物件上的同步塊在同時只能被一個執行緒進入並執行操作

python3:列表推導式,生成器表示式,字典推導式 用法講解

列表推導式 任務: 我們有個任務是提取0—20的奇數位. 1.首先我們想到的是用for迴圈加if做到,如下: b=[] for i in range(21): if i%2==1: b.append(i) print(b) 2.懂list 也可以想

strlen模擬實現方法

第一種:基礎玩法 int My_strlen1(char* str) { assert(NULL != str); int count = 0; while(*str++) { count++; } return count; } 第二種:不重新設定變數 int My_s

Python擴充套件庫numpy中where()函式的用法 Python擴充套件庫numpy中where()函式的用法

原 Python擴充套件庫numpy中where()函式的三種用法 2018年06月25日 07:43:56 Python_小屋 閱讀數:1000

Spring AOP程式設計(二)-AOP實現方式

AOP的實現有三種方式: l         aop底層將採用代理機制進行實現。 l         介面 + 實現類 :spring採用 jdk

【LeetCode】11. Container With Most Water(盛最多水的容器)-C++實現方法

本題是Bloomberg的面試題。 問題描述:  一、第一種方法-暴力解法   當我們在面試時想不到解題的方法時,不妨使用暴力解法,雙重遍歷陣列。 當 i = 0 時,使用指標 j 遍歷陣列,找到第一輪的最大值 area: 當i = 2 ,使用指標 j 遍歷