jjzjj

使用 HashMap 实现多线程的 Java 单例同步

我有以下类(class):publicclassAggregationController{privateHashMap>messages;privateHashMapcounters;BooleanbuildAggregateReply;privatebooleanisAggregationStarted;privatestaticHashMapinstances=newHashMap();privateAggregationController()throwsMbException{messages=newHashMap>();counters=newHashMap();build

java - 测试多线程代码或确保代码是线程安全的指南

是否有任何测试多线程代码的指南(除了在问题上抛出一堆线程并祈祷)。我基本上是在寻找测试数据损坏、死锁和其他并发问题的好方法。本质上,我希望能够通过测试证明代码是线程安全的。Java中是否有任何框架可以让您轻松地为多线程场景编写测试? 最佳答案 我已经编写了很多多线程代码,但从未发现任何可以轻松测试我没有预测到的并发正确性问题的东西。大多数时候,我必须考虑它可能会崩溃的场景,然后我如何在这种情况的极端版本​​中证明它的正确性(通常使用CountDownLatches或类似工具以我认为它可能崩溃的方式弯曲它。绝对使用FindBugs和类

java - JMS 队列上多线程消息处理的最佳实践

我目前正在将JMS支持添加到类似应用程序服务器的框架中。JMS将由HornetQ(独立代理,服务器类路径上的hornetqjar)实现,但既没有JBoss,也没有spring,也没有其他任何可以提供MDB的东西。下一步是将消息监听器添加到xa队列,以允许并行处理传入消息。有些消息会启动长时间运行的任务,因此基本思想是从onMessage方法生成工作线程。在漫长的互联网旅程中,我遇到了thisdiscussion,其中一位参与者提到,他不会这样做,而是使用一个额外的内部队列来完成任务:然后(单线程)消息监听器将简单地从入站队列中获取消息并为内部队列创建新消息,其中在该内部队列的另一端,一

Java - 如何使用 SwingWorker 创建多线程游戏

我想用线程创建一个[1人vsPC]游戏。我们的棋盘上有10*10个两种颜色的形状,如下所示:whenthePlayerclicksonBLUECircles,TheircolorturnsintoGray.attheothersidePCshouldturnallREDRectanglesintoGray.theWINNERiswhoClearsallhis/herownShapesEarlier.播放器的代码工作正常,但是,我的问题在于实现游戏的PC端,正如我在此article中所读到的我应该使用SwingWorker在GUI中实现线程。这是我第一次使用SwingWorkers,我不

java - Java多线程帮助

好吧,这是一个双重目的的问题。我希望从中获得的主要好处是对多线程的更多了解。关于多线程,我是一个完全的新手,这是我第一次尝试在多线程中执行任何操作。我希望带走的另一件事是一些家庭作业方面的帮助,我正在将其转变为一个更加复杂的弗兰肯项目,以进行娱乐和学习。在这个问题的第一部分中,我将详细说明我在作业中一直在研究的线程的思路和方法。如果我做不好的事情,需要修复,无论如何,请告诉我,以便我学习。同样,我对多线程几乎一无所知。首先,我目前正在上一门计算机科学类(class),更好的是,它有家庭作业,使用的是我已经学过的技术和数据结构,因此并不具有挑战性。为了不让我完全厌倦,我尝试着做一个简单的

java - Java 中多线程的替代方案

有个问题困扰我好久。例如,我有一个多线程服务器,当它收到一个请求时,它将这个请求传递给一个处理程序,这个处理程序将处理这个请求。我们使服务器多线程化的原因之一是:如果不是多线程,服务器处理这个请求的时候,在意义时间内,另一个请求到来,那么这个请求将被丢弃,因为服务器现在不可用。所以我想知道是否有多线程服务器的替代方案,例如我们可以为非多线程服务器创建一个队列?完成一个请求后,何时可以从队列中获取另一个请求。 最佳答案 是的,你可以有一个event-basedserver.此功能由java.nio包提供,但您可以使用像netty这样的

java - 网络 Swing 游戏中的多线程 : using invokeLater vs locks

我正在编写一个简单的自上而下的太空游戏,并且正在扩展它以允许通过网络与多个玩家一起玩。我读了很多书,但这是我第一次这样做,我希望能得到一些关于选择合理设计的建议。我的GUI是使用Swing编写的。每秒30次,计时器触发,并根据内存中gameWorld对象中的数据重新绘制我的GUI(本质上是带有位置的船舶和射弹列表等)。游戏世界的物理更新也是使用这个计时器进行的。因此,对于单人游戏实现,一切都发生在EDT上,并且效果很好。现在,我有单独的线程处理来自其他玩家的传入数据包。我想根据这些数据包包含的内容更新我的gameWorld对象中的数据。我的问题是,我应该使用invokeLater来进行

java - Java中的多线程最佳实践

我是Java编程的新手。我有一个用例,我必须并行执行2个数据库查询。我类(class)的结构是这样的:classA{publicObjectfunc_1(){//executesdbquery1}publicObjectfunc_2(){//executesdbquery1}}现在我在同一个类中添加了另一个函数func_3,它调用这2个函数,但也确保它们并行执行。为此,我正在使用可调用对象和future。以这种方式使用它是正确的方法吗?我将this变量存储在一个临时变量中,然后使用它从func_3调用func_1和func_2(我不确定这是正确的方法)。或者还有其他方法可以处理此类情况

java - 在多线程中使用 easymock

我想测试一些方法是否会在失败时被召回。调用在单独的线程中执行。所以我这样写代码finalFoomock=createStrictMock(Foo.class);mock.bar();expectLastCall().andThrow(newRuntimeException("TESTEXCEPTION"));mock.bar();replay(mock);doStuff();sleepSomeTime();//Prettydirty.ButIneedtotestitinmultithreading.verify(mock);测试通过。但是我还没有实现召回。为了让测试失败,我替换了moc

Java多线程应用程序只使用一个核心

我在使用openJDK1.7.0_5164位的CentOS6.0上运行的JVM出现问题。我的系统是4核系统和8GB内存。我正在运行我自己编写的Java多线程应用程序。它应该将大量数据插入NoSQL数据库。为此,我使用java.concurrent.Executors中的“CachedThreadPoolExecutor”产生了4个线程。我实例化了4个实现“Runnable”接口(interface)的Worker。之后我使用线程池执行线程。这是我的代码:publicvoidstartDataPump(intnumberOfWorkers){//class"DataPump"implem