Java / Scala多线程文件编写

时间:2017-06-21 09:25:18

标签: java multithreading scala filewriter bufferedwriter

我想运行多个Gatling模拟,这些模拟会在文件中共享数据。

现在我有以下代码:

    currentCell.containerView?.layer.cornerRadius = 8 // Your choice here.
    currentCell.containerView?.clipsToBounds = true

TestAndUse接收一个字符串并检查文件是否包含它。如果是,则返回false,否则将字符串写入文件。 它适用于模拟中的数百个虚拟用户,但不适用于并行运行的模拟。我注意到在两个并行运行的模拟中,230行写在文件中,其中2行是相同的。

如果文件被另一个正在运行的模拟打开,我怎么能设法锁定文件?

谢谢你, 尤

1 个答案:

答案 0 :(得分:2)

如果通过"并行运行模拟"你的意思是你正在执行多个模拟过程,那么问题是var available = true的值和synchronized上的锁都在每个进程的内存空间中,并且它们不是共享的。

如果是这种情况,您需要更改方法acquire()以锁定所有正在运行的进程共享的内容,例如使用数据库上的锁表或检查是否存在指示的文件资源被锁定。