multithreading相关内容

什么时候/为什么我应该在Java中使用Multithread?

我不知道何时应该在Java开发中使用Multithread,以及使用它的逻辑/原因。它在不同情况下有何帮助? 情景1 我正在与敌人进行2D滚动游戏,想想金属slug 场景2 我正在建立一个数据库守护程序来检查多个数据库内容。 场景3 我正在为JSP创建一个servlet,并从数据库中获取一些信息。 随意编辑方案以使其更好。 此外:我应该在游戏服务器上 ..
发布时间:2019-01-02 15:09:08 Java开发

Java:当被另一个线程中断时,如何在线程上捕获InterruptedException?

我正在开发一个多线程应用程序来连接外部服务器 - 每个都在不同的线程上 - 并且在有输入之前将被阻塞。其中每一个都扩展了Thread类。为了便于解释,我们称之为“连接线程”。 所有这些连接线程都存储在并发hashmap中。 然后,我允许RESTful Web服务方法调用取消任何线程。 (我正在使用Grizzly / Jersey,所以每次调用都是一个线程。) 我检索特定的连接线程 ..
发布时间:2019-01-02 15:07:20 Java开发

Swing模态对话框拒绝关闭 - 有时!

//这应该显示一个模态对话框,然后再次隐藏它。在实践中, //大约75%的时间都有效,而另外25%的时间,对话框 //保持可见。 //这是在Ubuntu 10.10上运行: // OpenJDK运行时环境(IcedTea6 1.9)(6b20-1.9-0ubuntu1) //这总是打印 // setVisible(true)即将发生 // setVisible(false)即 ..
发布时间:2019-01-02 15:05:28 Java开发

使用连接池和JSCH

我正在使用JSCH进行文件上传sftp。在当前状态下,每个线程在需要时打开和关闭连接。 如果可以使用与JSCH的连接池,以避免因大量连接打开和关闭而导致的开销? 以下是从线程内部调用的函数示例 public static void file_upload(String filename)throws IOException { JSch jsch = new JSch(); ..
发布时间:2019-01-02 15:05:10 Java开发

Java监视器:如何知道等待(长时间超时)是否因超时或Notify()而结束?

首先,这是一个近乎重复的: 如何区分等待(长时间超时)退出通知或超时? 但这是一个新的后续问题。 有这个等待声明: public final native void wait( long timeout)抛出InterruptedException; 它可能会被InterruptedException或超时退出,或者因为另一个线程中调用了Notify / N ..
发布时间:2019-01-02 15:04:43 Java开发

如何处理不停止线程的行为不当的库

在处理关闭库时没有正确清理线程的第三方库时有哪些解决方法? 许多库都暴露了生命周期方法,要么明确地或隐含地,对于其中包含的代码。例如,Web应用程序框架存在于servlet容器中的Web应用程序上下文中。创建上下文时,框架可能由于各种原因启动某些线程。 现在,进一步举例说明当servlet容器或Web应用程序上下文关闭时,Web应用程序框架应该终止所有这些线程。 ExecutorSer ..
发布时间:2019-01-02 15:04:05 Java开发

ExecutorService,如何知道所有线程何时完成而不阻塞主线程?

我有一个多线程实现,我在其中创建一个ExecutorService并提交要执行的任务,我想知道所有线程被提交的时间已经完成而没有阻塞主线程和UI。我已经尝试过 ExecutorService.awaitTermination()但它阻止了主线程和UI。我搜索了很多,但我似乎无法找到一种优雅的方式来做到这一点。我正在考虑创建另一个线程来计算完成的线程数量,并在它们全部完成时启动一个事件,但这不是一个 ..
发布时间:2019-01-02 15:01:53 Java开发

原子读写long和double值

long 和 double 读取和写入操作不是原子的,因为它们的大小超过了cpu字大小。 我可以获得 long 和 double的原子读写操作如果我有64位机器? 解决方案 所以我可以获得原子读写如果我有64位机器,则操作long和double? 答案是“可能”。答案取决于JVM实现以及机器架构。引用 Java语言定义17.7 : 某些实现可能会发现将64位长或双值上 ..
发布时间:2019-01-02 15:00:19 Java开发

Stanford CoreNLP Annotators线程安全吗?

Stanford CoreNLP网站 http://nlp.stanford.edu/software/corenlp.shtml 列出了几十个像魅力一样工作的注释器。我想使用Annotators的实例来处理多个线程的常见任务(词形还原,标记,解析)。例如,将大量(GB文本)的处理拆分为线程或提供Web服务。 过去有过一些关于LocalThreads的讨论根据我的理解,每个线程使 ..
发布时间:2019-01-02 14:55:20 Java开发

限制JVM使用的线程数

如何设置某人可以创建的线程数限制?我所做的是运行某人的代码(类似于ideone),并希望限制他可以生成的线程数。怎么办?一些jvm设置或其他什么? 编辑 我添加了更多指定信息,因为有些人没有得到我的观点。 一些随机的人发给我一个我的电脑要执行的代码 代码必须在最多k个线程内执行 所有必须自动化 - 像SPOJ,ideone等一样工作。 解决方案 在Linux上,您可以作为 ..
发布时间:2019-01-02 14:38:53 Java开发

确保弹簧组件是无状态的

当开发人员向Spring组件引入可变性时,我们遇到了多线程问题。这样的事情: @Component // singleton public class MyComponent { ... private String intermediateResults; public String businessMethod(){ ...填写intermediateResults; ..
发布时间:2019-01-02 14:38:48 Java开发

多线程httpClient

public class test { public static final int nThreads = 2; public static void main(String [] args)throws ExecutionException,InterruptedException { // Runnable myrunnable = new myRunnable(); Ex ..
发布时间:2019-01-02 14:34:29 Java开发

如何在java中的并行程序中获得理想的线程数?

我需要在批处理程序中获得理想的线程数,该程序在支持并行模式的批处理框架中运行,如Spring Batch中的并行步骤。 目前为止据我所知,执行程序步骤的线程太多并不好,它可能会对程序的性能产生负面影响。一些因素可能会导致性能下降(上下文切换,使用共享资源时的竞争条件(锁定,同步......)......(还有其他因素吗?))。 当然,获得理想线程数的最佳方法是让我有实际的程序测试来调整 ..
发布时间:2019-01-02 14:32:46 Java开发

锁定分裂与锁定条带化

以下是Joshua的Effective Java摘录: 如果你在内部同步你的类,你可以使用各种 实现高并发性的技术,例如锁定拆分,锁定 条带化和非阻塞并发控制。 上面表明锁定分裂和锁定条带是两种不同的技术,但当我试图找到区别之间我找不到区别。 它们之间是否存在差异或它们是一回事吗? 解决方案 锁分裂就是为类功能的不同部分使用不同的锁;例如一个用于读取操作的锁定,另一个 ..
发布时间:2019-01-02 14:31:48 Java开发

如何配置spring来执行重叠的fixedRate任务?

我正在尝试使用java spring中的@Scheduled注释以固定速率执行任务。但是,默认情况下,如果任务比速率慢,spring将不会以固定速率执行fixedRate任务。是否有一些设置我可以添加到我的弹簧配置来改变这种行为? 示例: @Service public class MyTask { @Scheduled(fixedRate = 1000) public vo ..
发布时间:2019-01-02 14:31:45 Java开发

MultiThreading与ThreadPoolExecutor

我在我编写的许多应用程序中使用过多线程。在阅读更多内容时,我遇到了 ThreadPoolExecutors 。我无法区分这两种情况。 我理解的是,当我有一项任务时,我应该使用多线程我想将任务分成多个小任务来利用CPU并更快地完成工作。当我设置任务并且每个任务可以相互独立运行时,使用 ThreadPoolExecutor 。 请如果我错了,请纠正我。谢谢 解决方案 ThreadP ..

在main()完成后,RMI线程阻止JVM退出

总而言之,在我的应用程序不再需要RMI之后,我无法让几个Java RMI的非守护程序线程关闭。这可以防止JVM在main()完成时退出。 我知道导出 UnicastRemoteObject s将导致RMI保持线程打开,直到您成功调用 UnicastRemoteObject.unexportObject(Object o,boolean force)。这是一个例子(运行没有修改,JVM将正常退 ..
发布时间:2019-01-02 14:25:02 Java开发