线程安全写入文件在Java中起作用

时间:2017-07-05 21:15:51

标签: java android multithreading

我的目标是实现一个允许异步写入文件的函数,原型是

private final Object lock = new Object();

public void write(final string filename, final string message) {
    new Thread(new Runnable() {
        public void run() {
            // Create file object (if not exist create a new file)
            File file = new File(context.getFilesDir(), filename);
            // Try to write on that file
            synchronized(lock) {
                try {
                    FileOutputStream fileOutputStream = new FileOutputStream(file, true);
                    fileOutputStream.write(message.getBytes());
                    fileOutputStream.close();
                catch (...) {
                    ...
                }
            }
        }
    }).start();
}

此功能是否为线程保存?可以按文件锁定线程,允许异步写入不同的文件(并显示方法/伪代码/代码来完成这一点)

1 个答案:

答案 0 :(得分:0)

对于Route::get('profile/edit/{id}', array('uses' => 'BusinessController@editProfile', 'as' => 'profile.edit')); 我将创建一个自己的类,将其添加为lock并阻止该类实例化(使构造函数为私有)。这样你就可以确保总有一个对象。

  

这个函数是否为线程保存?

  

可以按文件锁定线程,允许在不同的文件上进行异步写入吗?