草庐IT

【JavaEE】线程池

全部标签

java - "Java concurrency in practice"- 缓存的线程安全数字分解器( list 2.8)

在以下代码中(复制自JavaConcurrencyinPractice第2章,第2.5节,list2.8):@ThreadSafepublicclassCachedFactorizerimplementsServlet{@GuardedBy("this")privateBigIntegerlastNumber;@GuardedBy("this")privateBigInteger[]lastFactors;@GuardedBy("this")privatelonghits;@GuardedBy("this")privatelongcacheHits;publicsynchronized

java - 守护线程 Java

这个问题在这里已经有了答案:WhatisadaemonthreadinJava?(27个答案)关闭9年前。我是并发和线程的新手-在开发我的应用程序时一直在使用它们。本质上,我的RMI应用程序(服务器端组件)中有许多线程轮询文件中的更改(这些文件每隔几秒更新一次)。在开发箱上进行测试时,我一直从命令行运行服务器,然后在完成后手动关闭它,并在一天中不断重复。正如它所发生的那样-我认为当我关闭命令行并仍在继续处理时我的线程可能不会停止。这会导致一些非常糟糕的副作用——虽然我不是100%确定这是否可能,所以希望有人可以确认这可能是这种情况。如果我将一个线程设为守护进程——这是否意味着当我关闭命

java - 有没有办法确定 Java 线程何时启动?

我收到了一个请求,要对JVM中正在运行的线程进行分析,以监控长时间运行的作业。有没有办法找到Java线程的开始日期/时间?我在获取线程方面没有问题,但是我想不出任何方法来查明线程已激活多长时间或何时开始。为了获取线程,我只是对ThreadGroup进行枚举。请注意,我无法控制实际线程本身,因此我无法输入任何时间或属性并自行记录开始时间。我所拥有的只是实际线程本身,需要从中确定数据。我可以在线程上找到两种方法——“getThreadCpuTime()”和“getThreadUserTime()”,但我不确定这些是否足够,因为显然线程偶尔会调用sleep()方法,我担心“sleep”时间不

java - Spring + Hibernate + Envers + 多线程 - session 关闭

我们使用Hibernate(带有JPA)和HibernateEnvers来保存对象的历史记录。Web应用程序运行许多线程,其中一些是由其他应用程序调用RMI方法创建的,一些是由应用程序本身创建的,还有一些是为处理http请求(它们生成View)而创建的。我们还使用OpenSessionInView模式来管理session,因此我们的web.xml包含:openEntityManagerInViewFilterorg.springframework.orm.jpa.support.OpenEntityManagerInViewFilteropenEntityManagerInViewFi

java - Cucumber-jvm线程安全吗?

我想在多个线程中运行相同的Cucumber测试。更具体地说,我有一组功能,在一个线程中运行这些功能效果很好。我使用JSON格式化程序记录每个步骤的运行时间。现在我想做负载测试。我更关心多线程环境下每个特性/步骤的运行时间。所以我创建了多个线程,每个线程都运行在同一个特性集上。每个线程都有自己的JSON报告。这在理论上可能吗?由于某些项目设置原因,我无法使用JUnit运行器。所以我不得不求助于CLI方式:longthreadId=Thread.currentThread().getId();StringjsonFilename=String.format("json:run/cucumb

java - 一个单独的线程可以更改静态变量吗?

网上冲浪后,我对下面的线程行为还是一头雾水。我知道静态变量在同一个类加载器中共享,但是这个摘录中肯定缺少某些东西:publicclassparallelCounter{publicstaticfinalintN=100000000;publicstaticintj=0;publicstaticvoidinc(){for(inti=0;i 最佳答案 这里有两点需要注意:您的代码存在竞争条件,因为打印时的状态取决于两个独立线程的执行速度。大多数时候t1甚至不会在println执行时开始执行inc。您可以尝试在t1.start之后添加sl

java - 使用@Transactional 保证线程安全

我有一个关于@Transactional注释如何单独管理代码和事务执行的问题。给定正确设置的Spring应用程序和以下代码:@Transactionalpublicvoidwithdraw(intamount){if(isEnoughFunds(amount)){decreaseFunds(amount);}}是否有可能出现如下场景:资金==100;金额==100线程A进入withdraw/事务A开始线程A执行isEnoughFunds,结果为真线程B进入withdraw/事务B开始线程B执行isEnoughFunds计算结果为真线程A执行decreaseFunds/线程A锁定数据库记

java - 如何在多线程代码中避免ConcurrentModificationException

每当我们使用java.utilCollection类时,如果一个线程更改集合而另一个线程正在使用迭代器遍历它,那么任何对iterator.hasNext()或iterator.next()将抛出ConcurrentModificationException。即使是synchronized集合包装器类SynchronizedMap和SynchronizedList也只是有条件的线程安全的,这意味着所有单独的操作都是线程安全的,但复合操作是控制流取决于先前操作的结果,可能会受到线程问题的影响。问题是:如何在不影响性能的情况下避免这个问题。注意:我知道CopyOnWriteArrayList

java - 如何在可运行但没有堆栈跟踪的 Java 线程中进行解释?

我正在调试遗留Java应用程序,线程转储(通过jstack获得)包含如下一些条目:"Thread-8"prio=10tid=0x0000000055f2c800nid=0x49bfrunnable[0x0000000000000000]java.lang.Thread.State:RUNNABLE就是这样。没有堆栈跟踪。这是怎么回事?如何定位在此线程中执行的Java代码? 最佳答案 线程没有(或没有)执行Java代码。它正在处理未由任何Java调用者直接请求的未在Java中实现的任务。例如,如果相应的OS线程刚刚捕获到一个信号。

java - 如何解决线程 "main"com.amazonaws.AmazonClientException : Unable to build cipher: Illegal key size using aws s3 中的异常

我正在尝试使用amazonaws进行加密和解密。我遇到了异常Exceptioninthread"main"com.amazonaws.AmazonClientException:Unabletobuildcipher:IllegalkeysizeMakesureyouhavetheJCEunlimitedstrengthpolicyfilesinstalledandconfiguredforyourJVMatcom.amazonaws.services.s3.internal.crypto.ContentCryptoScheme.createCipherLite(ContentCryp