基本上我的層次結構是我有一個類A,它啓動100個B類線程,而B類使用一個叫FileCreator
的類。 FileCreator
類有一個名爲writeToFile()
的方法,它被同步。 這是我如何實例化它的B類中:Java同步類中的方法
FileCreator newFile = new FileCreator(downloadFolder, content, page.getWebURL());
newFile.writeToFile();
現在我的問題是writeToFile()
實際上不同步。基本上這就是我把我的writeToFile()
public synchronized void writeToFile() {
System.out.println("Thread accessed");
//Some stuff here
System.out.println("Thread FINISHED!");
}
但是我在我的控制檯得到這樣的結果:
Thread accessed
Thread accessed
Thread FINISHED!
Thread FINISHED!
所以它不是真正的同步。因爲這些類是由不同的線程訪問,我假設這會導致問題。有沒有一種方法可以實際上同步我的方法,以便一次只有一個訪問權限?
看到我的編輯,只有裏面有'synchronized(xLock){/*..*/}' –
是的,我只是明白了。所以我應該創建一個單例xLock? –
是的,只需要像Object Lock = new Object()那樣創建一個'Object'並使用上面提到的方法。 –