使用synchronized关键字来同步多个线程操作同一个文件
使用synchronized关键字来同步多个线程操作同一个文件
import java.io.FileWriter; import java.io.IOException; public class FileSyncExample { private static Object file = new Object(); public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(new Runnable() { @Override public void run() { synchronized (file) { try { FileWriter writer = new FileWriter("output.txt", true); writer.write("Hello from thread 1\n"); writer.close(); } catch (IOException e) { e.printStackTrace(); } } } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { synchronized (file) { try { FileWriter writer = new FileWriter("output.txt", true); writer.write("Hello from thread 2\n"); writer.close(); } catch (IOException e) { e.printStackTrace(); } } } }); t1.start(); t2.start(); t1.join(); t2.join(); } }
在这个例子中,我们创建了两个线程,它们都会尝试操作同一个文件(output.txt)。我们使用synchronized关键字来同步它们的操作。每个线程都会创建一个FileWriter对象,向文件中写入一条消息,并关闭流。由于同步的保证,只有在当前没有任何线程持有文件锁时,另一个线程才能获取锁并执行操作。这样可以确保多个线程不会同时写入文件,避免了数据不一致和文件损坏的问题。
#######################
QQ 3087438119