【发布时间】:2013-10-12 14:06:36
【问题描述】:
基本上,我的层次结构是我有一个 A 类,它启动 B 类的 100 个线程,而 B 类使用一个名为 FileCreator 的类。 FileCreator 类有一个名为 writeToFile() 的同步方法。
这就是我在 B 类中实例化它的方式:
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!
所以它并不是真正同步的。因为这些类是由不同的线程访问的,所以我假设这会导致问题。有没有办法真正同步我的方法,以便一次只有一次访问?
【问题讨论】:
标签: java multithreading synchronization thread-safety synchronized