我正面臨有關Java方法同步的問題。讓我們希望我可以簡單地解釋它:在不同的類(和不同的包)中同步兩種方法
我有兩個不同的方法在兩個不同的類,在兩個不同的包。喜歡的東西:
Package1
|_Class1
\MethodA
Package2
|_Class2
\MethodB
好了,現在我需要這兩種方法,這是不是線程同步。到目前爲止,我有兩種不同的方法:
共享信號量。
外Package1
和Package2
創建一個共享的靜態信號,是這樣的:
package Package3;
public class SemaphoreClass {
public static Semaphore;
}
我真的不知道,如果JVM會認爲這是一個共享的信號,無論如何。
Synchronized(SharedClass.class)。
使用共享類這兩種方法實現同步,是這樣的:
public void MethodA() {
synchronized (SharedClass.class) {
//...
}
和
public void MethodB() {
synchronized (SharedClass.class) {
//...
}
不管怎樣,這些都只是接近。我想聽聽實現我想實現的最佳方式是什麼。擁有JVM的共享信號會讓事情變得更容易,但是,我知道必須有解決方案。提前致謝。
信號量解決方案是好的......但是不要忘記在'finally'塊中釋放它! – fge
事實上,類在不同的包中是不相關的,你可以按照同步一個類的實例的方式同步它的實例。 – SJuan76
@ SJuan76我知道這不是真的相關,所以我把它們放在「()」裏面;) –