私のプログラムには、「送信側」スレッドと「受信側」スレッドの 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
}
}
}