我的程序中有两个线程,一个“发送者”和“接收者”线程。在不同时间的两个线程中,我需要写入文件。但是,我发现有时它们都同时写入文件,导致输入变得混乱。
有没有办法让程序在给定时间只有一个线程写入文件?
在另一个线程:Thread Synchronization中,有人告诉我使用 Synchronization 块。但是,当我尝试实现这一点时,我会收到关于我如何定义的错误:
private final Object lock = new Object();
它最初说:
无法对非静态字段锁定进行静态引用
如果我将其更改为静态,则它会说
类型的方法
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
}
}
}