草庐IT

Java 7 NIO/JPathWatch 问题 - 在 Windows 中移动目录

我已经实现了一个应用程序,它使用JavaNIO的WatchService来监视目录树中文件和文件夹的更改。在WindowsXP上运行时,所有文件系统更改都会被拾取-除了通过在资源管理器中拖放将目录移动到受监视的树中。选取事件以剪切和粘贴目录(ctrl+x、ctrl+v),而不是拖放(编辑-请参阅下面的更新)。我已经使用JPathWatch重新实现了解决方案,但是这也存在同样的问题。我正在注册标准的ENTRY_CREATE、ENTRY_DELETE和ENTRY_MODIFY并且我还使用了好奇的、文档不足的com.sun.nio.file.ExtendedWatchEventModifie

java - 在 java 中移动目录会抛出 java.nio.file.FileAlreadyExistsException

我正在创建一个回滚功能,这是我想要实现的:在与data文件夹相同的位置创建一个tmp文件夹;在执行任何操作之前,我将所有内容从data文件夹复制到tmp文件夹(少量数据)。回滚时我想删除数据文件夹并将重命名tmp文件夹到数据文件夹.这是我试过的StringcontentPath="c:\\temp\\data";StringtmpContentPath="c:\\temp\\data.TMP";if(Files.exists(Paths.get(tmpContentPath))&&Files.list(Paths.get(tmpContentPath)).count()>0){File

关于springboot访问tomcat,线程http-nio-8080-exec的来源问题

最近在看并发操作时候,例如jmeter进行接口压测(本地自己的springboot2的环境),发现一个有趣的现象,就是关于线程http-nio-8080-exec-1,http-nio-8080-exec-2等等的出现。但是这个线程数不管我的压测数是多少这个线程数不会超过10.抱着好奇的心去搜索了一下相关的文章,但是没有看到比较合适的。然后就只有自己去跟了一下源码。在此自己总结一下。两个问题:1、这个http-nio-8080-exec东西是怎么来的2、为什么这个线程数不超过10把这两个问题其实可以一起归为一个问题来跟代码进行解决:因为我们知道,一般在自定义线程或者线程池名称的时候,我们是可以

java - (Java 7 NIO.2) 监视服务线程的自定义名称

在Java7中使用nio.2,当您创建这样的watch服务时:WatchServicewatcher=FileSystems.getDefault().newWatchService();然后,启动后台线程,在无限循环中轮询文件系统事件。此线程的名称是“Thread-n”,这在调查线程转储或分析session期间有点麻烦。我们可以更改该线程的名称吗? 最佳答案 直接看实现,好像不行。如果您不介意一些小技巧,您可以找到线程并重命名它。类似于(//TODO:进行错误检查)SetthreadsBefore=Thread.getAllSta

Java 7 的 nio.file 包在创建新文件时非常慢

我正在尝试从java程序创建300M文件,我从旧文件API切换到新的java7nio包,但新包比旧包更慢。与使用旧文件API时相比,我发现CPU利用率较低,但我正在运行这个简单的代码,我获得了0.5兆字节/秒的文件传输速率,并且来自java的写入正在从一个磁盘读取并写入另一个(写入是访问磁盘的唯一进程)。Files.write(FileSystems.getDefault().getPath(filePath),fiveToTenKBytes,StandardOpenOption.CREATE);这里有没有希望得到合理的吞吐量?更新:我正在从大文件中解压3亿个5-10k字节的图像文件。

Java NIO 适合低延迟还是高吞吐量?

我是JavaNIO新手,用过一点。我有一个一般性的查询。如果您正在设计超低延迟应用程序与高吞吐量应用程序,那么使用非阻塞IO后两者中哪一个明显受益?我的理解是,非阻塞IO肯定有助于提高吞吐量,因为工作线程不会阻塞,因此不会等待响应,并且可以自由触发新请求,直到之前的请求得到服务。一旦我们获得对先前触发的请求的响应,工作线程就可以异步处理它们,从而提高吞吐量。但是,我看不出非阻塞IO如何直接有利于低延迟应用程序。我想“异步行为是避免争用的好方法。”如果是这样的话,低争用意味着低延迟。因此NIO可能有助于降低延迟。有道理吗? 最佳答案

java - Gson:序列化 java.nio.Path 导致 StackOverflowError

序列化它,导致StackOverFlowError:importjava.nio.file.Path;importjava.nio.file.Paths;publicclassTmp{privatePathpath=null;publicTmp(){path=Paths.get("c:\\temp\\");}}在我看来这像是一个错误!或者我做错了什么?是否有解决方法(期望编写一些将路径转换为字符串的自定义序列化程序)java.lang.StackOverflowErroratcom.google.gson.internal.$Gson$Types.resolve($Gson$Types

java - Scala/Java 中的 NIO 问题是什么

在网上搜索jvm并发性时,我发现了有关搜索Scala/Java的非阻塞IO库的问题。问题是什么?如果我想发送一些东西到文件/套接字,我可以启动单独的线程来完成这项工作。我知道使用基于事件的线程可能会出现问题-因为整个系统可能会被阻塞。但它是否引用了JVM/Scala?已添加:如果我错了请纠正我:我认为当你需要以异步方式调用一些IO函数时,它需要进入单独的进程或系统(重)线程。我对吗?所以-所有关于用通用语言解决此类问题的问题都涉及创建和管理单独的进程或线程。因此,该语言的唯一便利是创建一些线程池,这些线程池将异步分配给IO操作。所以我的假设是。句子:LanguageXisbettert

用于继续流式传输的 java.nio 选择器和 SocketChannel

我目前正在将java.nio.channel.Selectors&SocketChannels用于将打开一对多连接以继续流式传输到服务器的应用程序。我的应用程序有三个线程:StreamWriteWorker-对SocketChannel执行写入操作,StreamReadWorker-从缓冲区读取字节并解析内容,StreamTaskDispatcher-执行Selector对readyOps的选择并为工作线程分派(dispatch)新的可运行对象。问题-对选择器的选择方法的调用在第一次调用时仅返回一个>0的值(有效的readyOps);我能够一次性在所有就绪channel上执行写入和发送

java - 使用 java nio 路径时未安装 JBoss wildfly 8.x Provider "vfs"

我正在尝试将我的spring应用程序从glassfish4导出到JBosswildfly8.x或9alpha,但是当我的应用程序在我的代码的某些部分启动时抛出异常:Causedby:java.lang.RuntimeException:java.nio.file.FileSystemNotFoundException:Provider"vfs"notinstalledatio.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:218)atorg.wildfly.extension.