public void logUser(long uniqueID, String event) throws IOException
{
BufferedWriter buffWriter = new BufferedWriter(new FileWriter(uniqueID + ".log", true));
buffWriter.write(event);
buffWriter.close();
}
我相信同步整个事情的另一个选择是使用异步方法。假设所有日志条目都被添加到blockingqueue
中,其他线程使用该队列。那么,就不需要同步。
示例:
public class LogAsync {
// Some kind of abstraction for a log entry
public static class LogEntry {
private final String event;
private final long uniqueId;
public LogEntry(long uniqueId, String event) {
this.uniqueId = uniqueId;
this.event = event;
}
public String getEvent() {
return event;
}
public long getUniqueId() {
return uniqueId;
}
}
// A blocking queue where the entries are stored
private final BlockingQueue<LogEntry> logEvents = new LinkedBlockingQueue<>();
// Adds a log entry to the blocking queue
public void logUser(long uniqueID, String event) {
logEvents.add(new LogEntry(uniqueID, event));
}
// Starts the thread that handles the "writing to file"
public LogAsync start() {
// Run in another thread
CompletableFuture.runAsync(() -> {
while (true) {
try {
final LogEntry entry = logEvents.take();
try (BufferedWriter buffWriter = new BufferedWriter(new FileWriter(entry.getUniqueId() + ".log", true))) {
buffWriter.write(entry.getEvent());
} catch (IOException e) {
e.printStackTrace();
}
} catch (InterruptedException e) {
break;
}
}
}
);
return this;
}
}
初始化整个过程的方式可以如下所示:
final LogAsync logger = new LogAsync().start();
logger.logUser(1, "Hello");
logger.logUser(1, "there");
logger.logUser(2, "Goodbye");
我试图了解正确的方法来同步文件读/写在PHP中使用群。 我有两个php脚本。 testread.php: 和testwrite。php: 现在我跑testread.php,让它挂在那里。然后我在另一个会话中运行testwrite.php。正如预期的那样,flock在testwrite.php.失败但是,当testwrite.php退出时,文件test.txt的内容被清除。事实是,即使文件在另一个进
问题内容: 我创建了一个小型Java servlet,其目的很简单:调用它后,它将执行以下步骤: 从本地文件系统读取文件foo.json 处理文件中的数据并对其进行一些更改 将更改写回文件 代码的简化版: 现在,我面临一个问题,即可能有两个或多个对servlet的http请求几乎同时调用servlet。为了避免对同一文件进行多次并行写访问,我需要以某种方式进行同步。根据我对servlet生命周期过
我正在尝试访问JSP文件中的init参数。当我从servlet映射输入URL模式时,就像下面这样:http://localhost:8080/jee_learning/testingjsp它工作得很好,参数就在那里。 但是当我输入一个JSP文件名:http://localhost:8080/jee_learning/testing.JSP时,参数为NULL。 web.xml: JSP文件内部: 这
问题内容: 搜寻了几个小时后,就开始对此完全取笑。我还在网站上看到了该问题的各种变体,但似乎无法使其正常工作。JFrame需要从ini文件中读取数据,并且我已经创建了一种打开该文件的方法。所述文件存储在jar文件内称为资源的文件夹中。 当我在编译后运行代码时,这当然可以完美地工作,但是在导出到.jar文件后会引发异常。我已经研究过使用InputStream,FileInputStream,但似乎找
问题内容: 我需要能够访问存储在已编译jar文件中的文件。我已经弄清楚了如何将文件添加到项目中,但是如何在代码中引用它呢?如何将文件从jar文件复制到用户硬盘驱动器上的某个位置?我知道有很多方法可以访问文件(FileInputStream,FileReader等),但是我不知道如何查看自身。 问题答案: 您可以使用如下形式: 如果foo.txt位于JAR文件的根目录中,则可以使用: 我相信,假设该