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中方法,对象,类的同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WPS教程:手把手教你制作"红头文件"
- 下一篇: pdf文件用什么打开最好电脑如何打开pd