我對多線程編程的經驗不多。我有多線程寫入文件。我想知道有什麼區別:具有同步功能的單例類與靜態同步函數有什麼區別
實施1:一個具有靜態同步功能的類。每個線程調用FileUtil.writeToFile()
public class FileUtil {
public static synchronized void writeToFile(String filename) {
// write to file....
}
}
實現2:一個單獨的類。每個線程調用Fileutil.getInstance()。將writeToFile()
public class FileUtil {
private static final FileUtil fileManager = new FileUtil();
private FileUtil() {
}
public synchronized void writeToFile(String filename) {
// write to file....
}
public static FileUtil getInstance() {
return fileManager;
}
}
我不參與投票。我會鏈接到[this](http://stackoverflow.com/questions/437620/java-synchronized-static-methods-lock-on-object-or-class),它解釋了類與實例方法中的同步差異。之後唯一的區別就是你正在調用一個額外的方法,第二種情況是'getInstance'。 –
@SotiriosDelimanolis所以我想也許實現1和2都可以,並且線程安全。實施1是一個更清潔和更簡單的方法? –
我認爲這減少了是否使用靜態方法或單例模式的類的問題。同步的差異只是顯示器。 – RealSkeptic