草庐IT

【JavaEE】线程池

全部标签

java - 在 Java 中测试线程安全

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:HowshouldIunittestthreadedcode?Guidelinesfortestingmultithreadedcodeorensuringthatcodeisthread-safe是否可以“单元测试”一个简单的类是否是线程安全的?我的具体情况是一个简单的类,它是vector的子集:给定一个要保留的vector位置“白名单”和一个输入vector,它会生成一个仅包含白名单中位置值的输出vector。我想写一个单元测试(如果可能的话)以确保如果我们将来重构这个类,我们会保持它的线程安全。如果该类

java - static final char[] 线程安全吗?

如果我有privatestaticfinalchar[]SOME_CHARS;那个线程安全吗?我的意思是,如果我有多个线程引用该数组中的字符(但不更改它们),会出现什么问题吗?例如privateclasssomeThreadextendsThread(){publicvoidrun(){for(inti=0;i换句话说,我是否需要将char[]放入某种支持线程的Java集合中? 最佳答案 如果你在初始化后不更改它们,应该没问题。(请注意,这依赖于它是一个staticfinal变量-初始化类的方式将确保所有线程都能正确看到初始化的数组

java - 线程 "main"java.lang.NoClassDefFoundError : Could not initialize class com. sun.jersey.core.header.MediaTypes 中的异常

我正在尝试运行Jersey客户端并面临这个问题。WS类:importjavax.ws.rs.GET;importjavax.ws.rs.Path;importjavax.ws.rs.Produces;importjavax.ws.rs.QueryParam;importjavax.ws.rs.core.MediaType;importjavax.ws.rs.core.Response;@Path("/hello")publicclassHelloWorldService{@GET@Path("/vip")@Produces(MediaType.APPLICATION_JSON)publ

java - 如何在简单的现金存取程序中处理多线程

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭7年前。Improvethisquestion我的导师说要使用多线程来更新帐户管理系统。下面给出了该系统的粗略概念。这是我的源代码。账户类别publicclassAccount{intbalance=1000;publicintgetBal(){returnbalance;}publicvoidwi

java - 线程局部

我有这个声明,它来自Goetz的Java并发实践:Runtimeoverheadofthreadsduetocontextswitchingincludessavingandrestoringexecutioncontext,lossoflocality,andCPUtimespentschedulingthreadsinsteadofrunningthem.“位置丢失”是什么意思? 最佳答案 线程工作时,经常会从内存和磁盘中读取数据。数据通常存储在内存/磁盘上的连续或靠近位置(例如,在遍历数组时,或读取对象的字段时)。硬件通过将内

Java多线程——加入一个CPU繁重的线程和volatile关键字

因此,在一些工作面试之后,我想编写一个小程序来检查i++在Java中是否真的是非原子的,并且在实践中应该添加一些锁定来保护它。事实证明你应该这样做,但这不是这里的问题。所以我在这里写了这个程序只是为了检查一下。问题是,它挂了。似乎主线程卡在t1.join()上行,即使由于上一行中的stop=true,两个工作线程都应该完成。我发现在以下情况下悬挂会停止:我在工作线程中添加了一些打印(如评论中所述),可能导致工作线程有时放弃CPU或如果我将标志booleanstop标记为volatile,导致立即写入被工作线程看到,或者如果我将计数器t标记为volatile...为此,我不知道是什么原因

java - 如何关闭带有线程的java框架

我有一个java框架,我想在3或4秒后自动关闭它。我发现我必须使用线程。但我不知道该怎么做,这是我代码的一个虚拟部分:packageintro;importjava.awt.*;importjava.io.IOException;//importview.LangMenu;publicclassIntroClassextendsFrame{privateint_screenWidth=0;privateint_screenHeight=0;privateint_screenCenterx=0;privateint_screenCentery=0;//privatestaticfinal

java - 在java中登录多线程应用程序

在多线程环境中记录日志的最佳方式和工具是什么,以便每个线程都有自己的记录器实例和单独的文件。这甚至可能吗? 最佳答案 您可以尝试使用自定义Log4Jappender,它将线程id作为参数并根据调用它的线程过滤消息。即时创建它,将其附加到记录器。虽然这种方法存在多个问题:过多的appender会减慢日志记录速度AppServer通常有一个线程池。这意味着随着时间的推移,同一个线程将参与执行完全不相关的请求,这些请求将最终出现在同一个日志文件中。我建议您考虑一种更简单的方法:将线程ID记录到同一个日志文件中。它又快又简单,log4j有一

java - 维护拥有大量线程的 Java 应用程序时,我需要了解什么?

背景信息我有一个进行数据分析的分布式处理应用程序。它旨在对实时更新的多组数据进行并行处理。作为设计的一部分,分析已分解为分析节点。每个节点获取源数据并对其进行处理以创建其他数据,然后这些数据又可以被其他节点使用。要对一个数据集进行我们当前的全套分析,需要大约200个节点。在目前的设计中,每个节点都有自己的线程运行。现在,大部分时间这些线程都处于hibernate状态。每当数据更新时,它们都会像瀑布一样轮流醒来,然后又回到sleep状态。该应用程序目前正在生产中运行40组数据,每组需要200个节点,使用8000个线程。当没有数据进来时,服务器上就没有负载。当数据在最繁忙的时候进入时,服务

java - 最终字段和线程安全

为了线程安全,它应该是故意不可变的java类“final”的所有字段(包括超字段),还是没有修饰符方法就足够了?假设我有一个带有非最终字段的POJO,其中所有字段都是某个不可变类的类型。这个POJO有getters-setters和一个设置一些初始值的构造函数。如果我通过删除修饰符方法来扩展此POJO,从而使其不可变,扩展类是否是线程安全的? 最佳答案 为了以线程安全的方式使用不带final字段的有效不可变对象(immutable对象),您需要在初始化后使对象对其他线程可用时使用安全发布习语之一,否则这些线程可以查看处于部分初始化状