草庐IT

Tread多线程

全部标签

java - 以线程安全的方式发布非线程安全的对象字段

我遇到了Java并发问题。是的,我看过标题几乎完全相同的问题,但它们似乎都在问微妙不同的事情。是的,我读过Java并发实践。是的,我明白为什么它是该主题的事实上的引用。是的,我已经阅读了专门关于在线程安全类中发布字段的部分。是的,我仍然会问一个关于Java的并发问题,尽管我知道有人会简单地指出那本书。虽然这让我感到难过——我知道您可以通过确保具有易变性和/或同步访问的正确读/写顺序,以线程安全的方式轻松发布可rebase元字段,并且64位基元需要由于在其读/写操作中缺乏原子性而具有原子访问。我知道在需要在类字段的特定“快照”上执行的代码块上使用锁。我完全了解带有AtomicLong等好

java - 单 Java 线程运行时的双核 CPU 利用率

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WouldamultithreadedJavaapplicationexploitamulti-coremachineverywell?我的双核机器(WindowsXP32位环境)上有一个像这样的简单Java线程运行publicstaticvoidmain(String[]strs){longj=0;for(longi=0;i我的期望是它会坚持使用单个CPU来充分利用高速缓存(因为在循环中我们一直使用局部变量j,因此一个CPU利用率将是100%,而另一个几乎是虚度。令我惊讶的是,线程启动后,两个CPU的利用率

java - 记录线程安全(Java + 注释)

我正在尝试更新一个使用依赖注入(inject)的应用程序,在这样做时,我正在尝试使用“线程安全”注释记录每个类(需要它),供其他编码人员和错误检查员使用。如果我有服务类,如下:@ImplementedBy(FooImpl.class)publicinterfaceFooSrvc{}及其相关的实现classFooImplimplementsFooSrvc{}*我是否应该使用线程安全注释来记录或注释接口(interface)和具体实现?只是服务,因为它是公开的,所以只是实现?*例如对于两者:@javax.annotation.concurrent.ThreadSafe@org.checkt

java - 如何在运行时更改特定用户/线程的日志级别

我将slf4j与log4j2.0或logback一起用作实现。例如,我的servlet有一个错误级别的记录器,我的服务器生成了100个servlet线程。我将在运行时获得特殊用户列表。当我检测到一些特殊用户连接时。我想将这些特殊用户/线程的日志级别更改为DEBUG,而其他线程的日志级别不受影响(仍然是ERROR)。我知道logback中的TurboFilter和log4j2.0中的DynamicThresholdFilter,但是由于我只会在运行时获取特殊用户列表,所以我无法使用它们。这是我的申请:packagecom.example.logging;importjava.util.H

java - 将 FlatFileItemReader 与 TaskExecutor 一起使用(线程安全)

有很多使用FlatFileItemReader和TaskExecutor的例子。我在下面提供示例(包括XML和Java配置):UsingOracleCoherencewithSpringBatchSpringBatchMultithreadingExample我自己将它与XML配置一起使用,用于使用开箱即用的JpaItemWriter写入数据库的大型CSV(GB大小)。即使不设置save-state=false或采取任何特殊处理,似乎也没有问题。现在,FlatFileItemReader被记录为不是线程安全的。我的猜测是JpaItemWriter通过持久化Sets来“覆盖”这个问题,即

java - 为什么最后一个线程没有被中断?

我正在尝试演示一种“随时算法”——一种可以随时停止并返回其当前结果的算法。演示算法仅返回i的一些数学函数,其中i是递增的。它检查是否被中断,如果是,则返回当前值:staticintalgorithm(intn){intbestSoFar=0;for(inti=0;i在主程序中,我是这样使用的:Runnabletask=()->{Instantstart=Instant.now();intbestSoFar=algorithm(1000000000);doubledurationInMillis=Duration.between(start,Instant.now()).toMillis

java - 如何为 HTTP servlet 容器选择最大线程数?

我正在开发一个在Jetty中作为servlet(使用阻塞IO)运行的RestfulWeb服务。找出最大线程的最佳设置似乎很难。是否有经过研究的公式来根据设置的其余部分的一些易于测量的特征来确定最大线程数? 最佳答案 非常简单和原始的:max_number_of_threads=number_of_CPUs*C其中C取决于您应用程序的其他因素:-)问自己以下问题:您的应用程序是CPU密集型(较低的C)还是花费大部分时间等待第三方系统(较高的C)?您是否需要更快的响应时间(较低的C),或者即使每个请求需要更长的时间(较高的C)也能够同时

java - 哪个 xml validator 将完美地用于多线程项目

我已经使用jdom对模式进行xml验证。那里的主要问题是它给出了一个错误FWK005解析时可能不会调用解析主要原因是多个线程同时进行xerces验证。所以我得到了我必须锁定该验证的解决方案。这不好所以我想知道哪个xmlvalidator最适合多线程项目publicstaticHashMapvalidate(StringxmlString,Validatorvalidator){HashMapmap=newHashMap();longt1=System.currentTimeMillis();DocumentBuilderbuilder=null;try{//obtainlocktopr

java - JBoss 线程等待随机监视器

我正在对部署在JBoss中的Web应用程序进行一些负载测试。它启动时很好,但随着测试的增加和更多模拟用户开始使用JBoss,性能严重下降:将VisualVM连接到它,我可以看到线程都很好,然后突然开始花费大部分时间等待监视器(绿色正在运行,红色是监视器,黄色是等待):运行jstack,我看到线程都在同一个地方等待:"http-0.0.0.0-8080-172"daemonprio=6tid=0x000000005da90000nid=0xd2cwaitingformonitorentry[0x000000006cb4e000]java.lang.Thread.State:BLOCKED

java - 在 Java 中杀死正在运行的 VM(JBoss 实例)上的卡住线程?

Abuginathirdpartylibrary在我的JBoss实例上的工作线程中导致无限循环。你知道有什么方法可以在不重启服务器的情况下杀死这个“卡住”的线程吗?我们希望能够从中恢复,直到部署修复程序,最好无需重新启动。见过几个人mentionusingThread.interrupt()-如果我要编写自己的MBean,我将如何获得相关线程的句柄以便中断它?更新:使用这些方法中的任何一种都无法解决。我确实遇到了anotherthreadaboutthesameissue这与为什么Thread.stop()isdeprecated有联系.别人有askedasimilarquestion