草庐IT

Tread多线程

全部标签

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

java - Java 中的线程组

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭6年前。Improvethisquestion我目前正在学习Java线程的基础知识,并且正在尝试编写一个简单的线程组程序。我写的和教程网站一样,虽然我得到不同类型的输出。下面是我得到不同输出的代码。publicclassThreadGroupDemoimplementsRunnable{@Overr

java - 如何正确同步两个线程

这是一个我在学校一直听说的问题,但在我被要求面试之前从来没有理由去解决。提示:使用2个线程按顺序打印"Threadi:Thenumberis'j'"其中j=1:100,i是线程号。线程1只能打印奇数j,线程2只能打印偶数j。编辑j的输出必须排序这是我的尝试,但我没有在面试过程中继续前进。我缺少任何基本部分吗?有什么优化吗?importjava.util.concurrent.Semaphore;publicclassThreadSynchronizationimplementsRunnable{privateintstart;privateSemaphoresemaphore;priv

java - 使用可运行的 jar 文件执行时如何解决多线程的 Java 问题?

我开发了一个JavaSwing应用程序,它使用SwingWorker类来执行一些长时间运行的任务。当应用程序从IDE(Netbeans)运行时,我可以毫无问题地同时启动多个长时间运行的任务。我为应用程序创建了一个可运行的jar文件,以便能够从IDE外部运行它。从这个jar文件运行的应用程序运行良好,唯一的异常(exception)是它不允许我同时启动2个长时间运行的任务。任务只是一个接一个地运行。我设法创建了一个非常简单的程序来演示这个问题。link该程序使用一个swingworker,它只是从1循环到100,并将数字写入控制台。这两个按钮启动两个执行相同操作的线程。如果我在netbe