日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java类同步_Java中方法,对象,类的同步

發布時間:2023/12/4 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java类同步_Java中方法,对象,类的同步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于在多線程環境中使用同步,我需要一些澄清.我在下面有一個小例子類.但我實際上發現很難做出以下內容如何工作的測試用例;我想要測試用例的原因是要了解同步如何處理這些不同的場景

>如果一個線程調用SharedResource.staticMethod,它將獲取該類的鎖.它是否意味著一個SharedResource的實例,比如x,必須等到它被鎖定到exectute x.staticMethod.

>將在塊中同步此操作,獲取代碼的該部分或整個對象的鎖定.即另一個線程可以在同一個對象上調用相同的方法;但執行不屬于同步塊的其余代碼

>如果上述觀點為真,那么使用虛擬對象鎖定不會提供任何額外的好處.正確?

>因此有不同級別的同步.類級別,對象級別,方法級別和塊級別.這意味著應該存在這些個別關卡的鎖?

如果我獲取了對象的鎖,另一個Thread不能調用同一個對象上的任何方法,但是如果我獲取了該方法的鎖,則另一個線程可以獲取另一個方法的鎖.它是否正確?

關于如何創建作用于同一對象和相同方法的兩個線程的一些提示將有所幫助(我理解我需要擴展Thread類或實現Runnable接口).但不確定如何讓兩個線程在同一個對象上調用相同的方法.

class SharedResource {

public Integer x =0;

public static Integer y=0;

Object dummy = new Object();

public Integer z=0;

public synchronized static void staticMethod(){

System.out.println("static Method is called");

y++;

}

public synchronized void incrementX(){

System.out.println("instance method; incrementX");

x++;

}

public void incrementXBlock(){

synchronized(this){

x++;

}

System.out.println("instance method; incrementXBlock");

}

public void incrementZ(){

synchronized (dummy) {

z++;

}

System.out.println("synchronized on dummy; incrementZ method ");

}

}

public class ThreadSynchronization extends Thread {

}

我已經閱讀過這些帖子,但如果我清楚地理解這些帖子,我就不是肯定的.

總結

以上是生活随笔為你收集整理的java类同步_Java中方法,对象,类的同步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。