0

基本的に私の階層は、クラス B の 100 スレッドを開始するクラス A があり、クラス 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!

したがって、実際には同期していません。これらのクラスは異なるスレッドによってアクセスされるため、それが問題の原因であると想定しています。一度に 1 つのアクセスしかないように、メソッドを実際に同期する方法はありますか?

4

2 に答える 2