1

私のプログラムには、「送信側」スレッドと「受信側」スレッドの 2 つのスレッドがあります。さまざまな時点で両方のスレッドで、ファイルに書き込む必要があります。ただし、両方が同時にファイルに書き込みを行っていると、入力がごちゃごちゃになることがあります。

プログラムが特定の時間に 1 つのスレッドのみをファイルに書き込む方法はありますか?

別のスレッド: Thread Synchronizationで、 Synchronization ブロックを使用するように言われました。ただし、これを実装しようとすると、定義方法に関するエラーが発生します。

private final Object lock = new Object();

それは最初に言います:

非静的フィールド ロックへの静的参照を作成できません

静的に変更すると、次のように表示されます

typeのメソッドsychronized(Object)は未定義ですSendThread

関数内にある必要がありますかsynchronized(lock)、それともコードの周りにあるだけですか?

この方法が現在の問題に役立つ場合、上記をどこでどのように定義すればよいですか?

私のコードの構造は次のとおりです。

public class my_main_class{

    private final static Object lock = new Object();

    public static void main (String[] args) throws Exception{

        class SendThread implements Runnable {

            synchronized (lock){
                  // contains code to print to text file
            }
         }

         class ReceiveThread implements Runnable {

            synchronized (lock){
                 // contains code to print to text file
            }
         }

}
4

1 に答える 1