草庐IT

java - 无法对可扩展方法进行多线程处理

更新:为了帮助阐明我要问的内容,我发布了一些java代码来理解这个想法。前一段时间我问了一个question关于如何让算法分解一组数字,我的想法是给它一个数字列表(1,2,3,4,5)和一个总数(10),它会计算出每个数字的所有倍数加起来等于总数('1*10'or'1*1,1*2,1*3,1*4'或'2*5'等)。这是我做过的第一个编程练习,所以我花了一段时间才开始工作,但现在我想看看我是否可以扩展它。最初问题中的人说它是可扩展的,但我对如何去做有点困惑。递归部分是我坚持缩放结合所有结果的部分的区域(它所指的表不可缩放但应用缓存我能够使其快速)我有以下算法(伪代码)://generat

Java 多线程与 Guava EventBus

我正在使用Guava事件总线。我有一个类似服务器的对象,它应该一直运行,监听要发布到bus的事件。所以在junit测试中(MyObject是被测类),我在自己的线程中创建它来模拟它并防止阻塞:@Testpublicvoidtest(){EventBuseventBus=newEventBus();Threadthread=newThread(){@Overridepublicvoidrun(){logger.debug("Creatingnewthread");MyObjectmyObject=newMyObject(eventBus);}};thread.start();...}一切

具有四核处理器的笔记本电脑中的 Java 多线程

我正在阅读Java教程,其中提到实际的多线程不会发生在具有单个处理器的机器中。它提到操作系统为Java进程分配指定的时间量,而JVM线程调度程序选择线程一次运行一个线程一小段时间。我有一台采用四核处理器的笔记本电脑-是否可以通过在每个内核中运行一个线程来以编程方式更快地运行多线程程序?之所以问这个问题,是因为书中提到只有真正的多处理器系统才能同时做多件事。 最佳答案 即使是单个CPU也可以在松散意义上“同时做多件事”,但它们并不是真正意义上的并行。您可以启动100个线程在单个内核上运行,它们将获得时间片,在此期间每个线程都可以运行几

java - Servlet : Singleton, 单线程或多实例多线程

这个问题之前有人问过,也讨论过,但我想再问一下。Servlet是否是单例?根据我的说法,它们仅由容器初始化,但它们仍然不是单例??为什么??Servlets是单线程还是多线程(忘记javax.servlet.SingleThreadModel类)即当对单个servlet有多个请求时会发生什么?如果它们同时执行,那就意味着它是多线程的??如果它是多线程的,那么每个线程都会有一个servlet实例,这与第一点矛盾!!我认为,每当有新请求时,容器都会为传入的请求创建一个新线程,比如Req1,因为它会调用或分派(dispatch)控件到servlet的服务方法。现在这个执行是同时发生的……我猜

java - 什么时候/为什么我应该在 Java 中使用多线程?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭9年前。Improvethisquestion我不知道什么时候应该在Java开发中使用多线程,以及使用它的逻辑/原因。它在不同情况下有何帮助?场景一我正在制作一个带有敌人的2D滚动游戏等等,想想金属弹头场景2我正在制作一个数据库守护进程来检查多个数据库内容。场景3我正在为JSP制作一个servlet,其中包含从数据库中获取的一些信息。请随意编辑场景以使其变得更好。另外:我应该为游戏服务器使用多线程吗?或者我不应该?

java - 绑定(bind) StringProperty 时出现多线程错误

我有一个关于多线程和StringProperty绑定(bind)的问题。我有一个CacheManager类,它包含一个Thread,它使用服务器上的更改更新我的缓存。现在,我想用文本和进度百分比通知用户(在JavaFX中是Label和ProgressBar)。为此,我使用publicstaticDoubleProperty和StringProperty,它们在CacheManager类中定义。我只是像这样绑定(bind)它:progressBar.progressProperty().bind(CacheManager.progress);someLabel.textProperty(

java - REST Controller 是多线程的吗?

我一直在这样做tutorial关于如何返回异步可调用对象。它按预期工作。但是当第一个请求hibernate5秒时我收到第二个请求,Controller等待在处理第二个请求之前完成前一个请求。如何让Controller立即处理每个请求并在后台hibernate?@编辑例子:想象一种情况,我的Controller需要向外部api发出请求,并根据其响应发送自己的响应。外部api调用需要2秒。我希望我的应用程序的用户只等待2.5秒,而不是被放入队列,因为Controller一次只能处理一个请求。 最佳答案 IsRESTcontrollerm

java - 使用多线程并行化 Java 中的 for 循环

我是java的新手,我想使用执行程序服务或使用java中的任何其他方法并行化嵌套的for循环。我想创建一些固定数量的线程,这样CPU就不会完全被线程占用。for(SellerNamessellerNames:sellerDataList){for(StringselleName:sellerNames){//getSellerAddress(sellerName)//parallizethistask}}sellerDataList的大小=1000,sellerNames的大小=5000。现在我想创建10个线程并将相同的任务分配给每个线程。这是针对第i个sellerDataList,第

Java 多线程 : Unexpected result

我正在开发企业应用程序。在多线程环境中运行应用程序时,我遇到了一些问题。我正在编写一个程序,其中有一个变量的值正在以非常快的速度(例如每秒10000次更新)更新(递增)。循环运行一定的迭代,变量的值递增并存储在HashMap中。一旦循环终止并打印HashMap中的变量值。我得到了意外的变量值。这是演示程序(请阅读评论以便更好地理解):classtestimplementsRunnable{staticConcurrentHashMapmap=newConcurrentHashMap();staticAtomicIntegervalue_to_be_incremented_stored=

java - 如何为多线程应用程序创建测试环境

全部,最近我开发了一个代码,据说是一个线程安全的类。现在我说“应该”的原因是因为即使在使用同步块(synchronizedblock)、不可变数据结构和并发类之后,由于JVM的线程调度环境,我也无法在某些情况下测试代码。也就是说,我只有纸上的测试用例,但无法复制相同的测试环境。是否有任何特定的指南或这里有经验的成员可以分享有关如何测试多线程环境的内容。 最佳答案 首先,您不能仅通过测试来确保您的类是完全线程安全的。无论您对其运行什么测试,您仍然需要让尽可能多的有经验的人检查您的代码,以检测细微的并发问题。也就是说,您可以像您所做的那