multithreading相关内容
我不知道何时应该在Java开发中使用Multithread,以及使用它的逻辑/原因。它在不同情况下有何帮助? 情景1 我正在与敌人进行2D滚动游戏,想想金属slug 场景2 我正在建立一个数据库守护程序来检查多个数据库内容。 场景3 我正在为JSP创建一个servlet,并从数据库中获取一些信息。 随意编辑方案以使其更好。 此外:我应该在游戏服务器上
..
我正在开发一个多线程应用程序来连接外部服务器 - 每个都在不同的线程上 - 并且在有输入之前将被阻塞。其中每一个都扩展了Thread类。为了便于解释,我们称之为“连接线程”。 所有这些连接线程都存储在并发hashmap中。 然后,我允许RESTful Web服务方法调用取消任何线程。 (我正在使用Grizzly / Jersey,所以每次调用都是一个线程。) 我检索特定的连接线程
..
//这应该显示一个模态对话框,然后再次隐藏它。在实践中, //大约75%的时间都有效,而另外25%的时间,对话框 //保持可见。 //这是在Ubuntu 10.10上运行: // OpenJDK运行时环境(IcedTea6 1.9)(6b20-1.9-0ubuntu1) //这总是打印 // setVisible(true)即将发生 // setVisible(false)即
..
我正在使用JSCH进行文件上传sftp。在当前状态下,每个线程在需要时打开和关闭连接。 如果可以使用与JSCH的连接池,以避免因大量连接打开和关闭而导致的开销? 以下是从线程内部调用的函数示例 public static void file_upload(String filename)throws IOException { JSch jsch = new JSch();
..
例如: static private DateFormat df = new SimpleDateFormat(); public static void format(final Date date){ for(int i = 0; i
..
首先,这是一个近乎重复的: 如何区分等待(长时间超时)退出通知或超时? 但这是一个新的后续问题。 有这个等待声明: public final native void wait( long timeout)抛出InterruptedException; 它可能会被InterruptedException或超时退出,或者因为另一个线程中调用了Notify / N
..
在处理关闭库时没有正确清理线程的第三方库时有哪些解决方法? 许多库都暴露了生命周期方法,要么明确地或隐含地,对于其中包含的代码。例如,Web应用程序框架存在于servlet容器中的Web应用程序上下文中。创建上下文时,框架可能由于各种原因启动某些线程。 现在,进一步举例说明当servlet容器或Web应用程序上下文关闭时,Web应用程序框架应该终止所有这些线程。 ExecutorSer
..
我有一个多线程实现,我在其中创建一个ExecutorService并提交要执行的任务,我想知道所有线程被提交的时间已经完成而没有阻塞主线程和UI。我已经尝试过 ExecutorService.awaitTermination()但它阻止了主线程和UI。我搜索了很多,但我似乎无法找到一种优雅的方式来做到这一点。我正在考虑创建另一个线程来计算完成的线程数量,并在它们全部完成时启动一个事件,但这不是一个
..
long 和 double 读取和写入操作不是原子的,因为它们的大小超过了cpu字大小。 我可以获得 long 和 double的原子读写操作如果我有64位机器? 解决方案 所以我可以获得原子读写如果我有64位机器,则操作long和double? 答案是“可能”。答案取决于JVM实现以及机器架构。引用 Java语言定义17.7 : 某些实现可能会发现将64位长或双值上
..
Stanford CoreNLP网站 http://nlp.stanford.edu/software/corenlp.shtml 列出了几十个像魅力一样工作的注释器。我想使用Annotators的实例来处理多个线程的常见任务(词形还原,标记,解析)。例如,将大量(GB文本)的处理拆分为线程或提供Web服务。 过去有过一些关于LocalThreads的讨论根据我的理解,每个线程使
..
换句话说,我想知道在中断线程中检测到中断时,在中断之前更改变量是否始终可见。例如, private int sharedVariable; public static void interruptTest(){ Thread someThread = new Thread(() - > { try { Thread.sleep(5000); } catch(Interrup
..
如何设置某人可以创建的线程数限制?我所做的是运行某人的代码(类似于ideone),并希望限制他可以生成的线程数。怎么办?一些jvm设置或其他什么? 编辑 我添加了更多指定信息,因为有些人没有得到我的观点。 一些随机的人发给我一个我的电脑要执行的代码 代码必须在最多k个线程内执行 所有必须自动化 - 像SPOJ,ideone等一样工作。 解决方案 在Linux上,您可以作为
..
当开发人员向Spring组件引入可变性时,我们遇到了多线程问题。这样的事情: @Component // singleton public class MyComponent { ... private String intermediateResults; public String businessMethod(){ ...填写intermediateResults;
..
使用Volley处理大量回复时发生了一些不好的事情: String url = AppHelper.DOMAIN +“/ service /pages/profile_update.json“; this.infoTextView.setText(getString(R.string.profile_info_updating)); final StringRequest
..
public class test { public static final int nThreads = 2; public static void main(String [] args)throws ExecutionException,InterruptedException { // Runnable myrunnable = new myRunnable(); Ex
..
我需要在批处理程序中获得理想的线程数,该程序在支持并行模式的批处理框架中运行,如Spring Batch中的并行步骤。 目前为止据我所知,执行程序步骤的线程太多并不好,它可能会对程序的性能产生负面影响。一些因素可能会导致性能下降(上下文切换,使用共享资源时的竞争条件(锁定,同步......)......(还有其他因素吗?))。 当然,获得理想线程数的最佳方法是让我有实际的程序测试来调整
..
以下是Joshua的Effective Java摘录: 如果你在内部同步你的类,你可以使用各种 实现高并发性的技术,例如锁定拆分,锁定 条带化和非阻塞并发控制。 上面表明锁定分裂和锁定条带是两种不同的技术,但当我试图找到区别之间我找不到区别。 它们之间是否存在差异或它们是一回事吗? 解决方案 锁分裂就是为类功能的不同部分使用不同的锁;例如一个用于读取操作的锁定,另一个
..
我正在尝试使用java spring中的@Scheduled注释以固定速率执行任务。但是,默认情况下,如果任务比速率慢,spring将不会以固定速率执行fixedRate任务。是否有一些设置我可以添加到我的弹簧配置来改变这种行为? 示例: @Service public class MyTask { @Scheduled(fixedRate = 1000) public vo
..
我在我编写的许多应用程序中使用过多线程。在阅读更多内容时,我遇到了 ThreadPoolExecutors 。我无法区分这两种情况。 我理解的是,当我有一项任务时,我应该使用多线程我想将任务分成多个小任务来利用CPU并更快地完成工作。当我设置任务并且每个任务可以相互独立运行时,使用 ThreadPoolExecutor 。 请如果我错了,请纠正我。谢谢 解决方案 ThreadP
..
总而言之,在我的应用程序不再需要RMI之后,我无法让几个Java RMI的非守护程序线程关闭。这可以防止JVM在main()完成时退出。 我知道导出 UnicastRemoteObject s将导致RMI保持线程打开,直到您成功调用 UnicastRemoteObject.unexportObject(Object o,boolean force)。这是一个例子(运行没有修改,JVM将正常退
..