在具有等待任务时动态调整java.util.concurrent.ThreadPoolExecutor的大小

我正在使用java.util.concurrent.ThreadPoolExecutor来并行处理多个项目。 尽管线程本身工作正常,但由于线程中发生的操作,我们有时会遇到其他资源限制,这使我们想要调低池中线程的数量。 我想知道在线程实际工作时是否有办法拨打线程数。 我知道您可以调用setMaximumPoolSize()和/或setCorePoolSize() ,但这些只会在线程空闲后调整池的大小,但是在队列中没有任务等待之前它们不会变为空闲。

String.replaceAll比自己完成工作慢得多

我有一段旧代码,用于在字符串中执行查找和替换标记。 它接收from和to的映射,迭代它们,对于每个对,迭代目标字符串,查找from使用indexOf() ,并用to的值替换它。 它完成StringBuffer上的所有工作,最终返回一个String 。 我用这一行替换了那段代码: replaceAll(“[,. ]*”, “”); 我进行了一些比较性能测试。 当比较1,000,000次迭代时,我得到了这个: 旧代码:1287ms 新代码:4605ms 3倍长! 然后我尝试用3次调用替换它来replace : replace(“,”, “”); replace(“.”, “”); replace(” “, “”); 结果产生了以下结果: 旧代码:1295 新代码:3524 2倍长! 任何想法为什么replace和replace都是如此低效? 我能做些什么来加快速度吗? 编辑:感谢所有答案 – 主要问题确实是[,. ]* [,. ]*没有做我想做的事。 将其改为[,. ]+ [,. ]+几乎等于非基于正则表达式的解决方案的性能。 使用预编译的正则表达式有所帮助,但是很少。 (这是一个非常适合我的问题的解决方案。 测试代码: 用正则表达式替换字符串:[,。 ] * 用正则表达式替换字符串:[,。 ] + 用正则表达式替换字符串:[,。 ] +和预编译模式

Tomcat不读取Spring-Boot应用程序属性

我是spring / java的新手,并且已经检查了spring-boot以查找我在工作的项目。 我一直在关注指南,最后有一个(半)工作的网络应用MVC + JPA用于数据访问。 当我通过Jar方法部署应用程序时,一切正常: java -jar build/libs/client.jar 但是,我们的应用程序最终将部署到Tomcat(v7.0.40),因此我需要从项目中创建war文件。 我在spring.io网站上跟随转换jar到战争指南并遇到了问题。 它似乎没有加载application.properties文件。 以下是重要的代码片段: 的src / main / JAVA /你好/ GreetingController: @Controller @Configuration public class GreetingController { @Value(“${app.username}”) private String username; @RequestMapping(“/greeting”) public String greeting(@RequestParam(value=”name”, required=false, defaultValue=”World”) String name, Model model) { model.addAttribute(“name”, name); model.addAttribute(“username”, username); return “greeting”; } } 的src / main / JAVA […]

我可以更新现有的Amazon S3对象吗?

我在看Amazon S3样品,样品在那里进行插入/删除…… 但我想用新数据更新现有的blob。 基本上内容是文本文件,并且文本已被修改,我希望S3对象存储新的文本内容。 我如何用Java做到这一点?

没有指定classpath时默认的类路径是什么?

想知道什么是未指定classpath选项时的默认类路径?

如何从JSP中的选择框中获取多个选定值?

我有一个html表单,其中有一个选择列表框,您可以从中选择多个值,因为它的multiple属性设置为multiple 。 考虑表单方法是get方法。 表单的html代码如下。 Untitled Document Multiple Selection   eleven twelve thirette fourteen fifteen sixteen seventeen eighteen nineteen twenty   我想在display.jsp页面的选择列表框中显示所选值。 那么如何在display.jsp页面上访问所选值。

以编程方式进行线程转储/ JDI(Java调试器接口)

我喜欢以编程方式生成线程转储。 我已经了解到基本上有两种方法可以做到: 使用“Java虚拟机工具接口”JVM-TI 使用更高抽象的“Java调试器接口”JDI 对于JVM-TI,我能够找到一些有用的信息,但我必须编写一个JNI-DLL,至少在目前,我想避免使用它。 使用JDI,我可以使用Java,似乎我可以在应用程序中使用它。 但我无法找到某种教程或HOWTO。 我能找到的唯一文件是Java-Docs http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdi/ ,这对我没有帮助,因为它没有给我看如何使用这个类。 那么,有没有人知道我能阅读的好教程/书? 感谢任何帮助!

在java中显示Gif动画

您好我正在使用Swing在Java 1.6上编写GUI应用程序。 我有一个弹出屏幕,应该显示一个gif动画,而我的Swing gui正在加载,还有一点点之后。 我的弹出屏幕是JDialog。 动画应显示在以下列方式添加到Jdialog的JLabel上: ImageIcon myImgIcon = getMyImgIcon(); JLabel imageLbl = new JLabel(myImgIcon); add(imageLbl, BorderLayout.CENTER); 现在的事情是动画只在gui加载后显示。 我相信在加载GUI时(在我的应用程序中这是一个繁重的操作),EDT非常繁忙,无法运行动画。 请参阅如何使用线程显示动画GIF图像 。 现在问题是我在不同的线程(不是EDT)上加载GUI是错误的,所以我不知道如何解决问题。 有没有人有想法?

如何创建可以通过单击运行的Java应用程序?

我想有一个可以轻松启动的Java应用程序。 到目前为止,我已设法创建一个jar文件,但我还没有看到任何优势。 在我通过“java HelloWorldSwing”运行我的应用程序之前,现在我使用“java -jar HelloWorldSwing.jar”(这比上一个命令更复杂,据我所知,jar文件的使用需要存在* .mf文件在同一目录中)。 我想要以下两种情况之一: 只需一个文件即可复制到另一个操作系统,只需在文件浏览器中单击此文件即可启动项目(此时如果点击我的jar文件,Ubuntu开始提取存档(因为jar是一个存档) , 我知道))。 创建一个象形图,可以放在桌面上,然后点击它启动我的Java程序。

Javagenerics,嵌套的通配符集合

编译(1.6) List l = new ArrayList(); 但事实并非如此 List<List> ll = new ArrayList<List>(); 有错误的 Type mismatch: cannot convert from ArrayList<List> to List<List> 有人可以解释原因吗? 谢谢 编辑:编辑为后续