所以我想检查一个文件是否包含数据。我的程序是多线程的,所以它不能工作,因为文件不能同时访问,还会给出错误,是否可以将它加载到string Array上,并检查该数组是否包含我想要的文本?
如果我在同一时间从5-10个不同的线程检查它,这有关系吗?
我如何从所有这些线程同时向文件写入文本,但它应该查看它是否正在使用,并等待然后写入,这样就不会记录任何错误。
发布于 2014-10-06 11:56:50
...是否可以将其加载到string Array上,并检查该数组是否包含我想要的文本?
是。将文件读入字符串数组,并检查数组中的一个字符串是否包含另一个字符串,这是一种简单的编程方法。
如果我在同一时间从5-10个不同的线程检查它,这有关系吗?
是的,这很重要。您必须以正确的方式实现代码,以确保它始终有效。
您的问题很难理解,但我猜您希望在线程之间共享字符串数组,并且希望线程更新该数组。在这种情况下,正确的同步是必不可少的,否则很容易遇到竞争条件和内存异常。
如何从所有这些线程同时向文件写入文本,但它应该查看它是否正在使用,并等待然后写入,这样就不会记录任何错误。
您需要正确地进行同步,以便在任何时候只有一个线程尝试写入文件。此外,您需要确保一个线程不会在另一个流打开文件时尝试打开指向该文件的流。(这很可能是导致您当前错误的原因。Windows上的Java不会让你这么做的。尽管Linux上的Java将允许这样做。)
我建议您阅读有关如何编写多线程程序的Oracle Java教程。
https://stackoverflow.com/questions/26209712
复制相似问题