草庐IT

MySQL并发事务

全部标签

java - 以并发方式逐行处理文件

现在我正在做一份关于数据格式转换的工作。有一个大文件,比如10GB,我目前实现的解决方案是逐行读取这个文件,转换每一行的格式,然后输出到一个输出文件。我发现转换过程是一个瓶颈。所以我正在尝试以并发方式执行此操作。每一行都是一个完整的单元,与其他行无关。有些行可能会因为行中的某些特定值不满足需求而被丢弃。现在我有两个计划:一个线程从输入文件中逐行读取数据,然后将行放入队列,多个线程从队列中获取行,转换格式,然后将行放入输出队列,最后一个输出线程从输出队列中读取行并写入输出文件。多个线程当前从输入文件的不同部分读取数据,然后处理行并通过输出队列或文件锁输出到文件。你们能给我一些建议吗?我真

java - 具有弱键的并发映射

我有一个高度并发的应用程序,它使用文件系统上的资源。两个线程同时访问同一资源的可能性很小,但如果发生这种情况,应用程序可能会显示有线行为。每个资源都可以通过String坐标vector进行映射(绑定(bind)在ResourceIdentifier类中)。在我当前的解决方案中,我创建了此类资源标识符的ConcurrentMap以收集线程在访问资源时使用的监视器:(ResourceIdentifier覆盖equals和hashCode正确。)ConcurrentMapconcurrentMap=newConcurrentHashMap();publicObjectaquireMonito

java - spring batch 在作业存储库和实际任务之间使用不同的事务管理器

我使用SpringBatch使用2个(可能更多,为简单起见假设2个)数据库。一个用于存储所有作业数据(所有BATCH_*表)。另一个用于实际运行我的业务逻辑数据。有些事情我不太明白。当我声明我的JobRepository时,我已经指定了我的TransactionManager,为什么我必须在我的tasklet上再做一次?(我不是故意使用默认名称的)我目前正在为tasklet提供与我的JobRepository相同的TrasactionManager,它管理与我在步骤中所做的不同的连接。这是否意味着我在作者或读者内部进行了自己的事务管理?如果#2为真,HowdoesSpringBatch

java - JBOSS:使用 Atomikos 在 Oracle XA 事务上卡住线程

当我打算使用atomikos和hibernate传输一些数据时,我的应用程序一段时间后出现错误。2015-11-0607:11:56,353WARN[http-/0.0.0.0:8083-10]datasource.xa.XAResourceTransaction-XAresource'COTXADBMS':resumeforXID'31302E3235332E312E35322E746D30303030313030303939:31302E3235332E312E35322E746D31'raised-7:theXAresourcehasbecomeunavailable-(Slf4

java - 在 JUnit 测试中使用事务注释时数据未保存在数据库中

同事们,我一个多星期都解决不了一个Spring事务的问题。我已经创建了非常相似的帖子(Whydatawasn'tsavedwhenIuse@Transactionalannotation?),但无法解决其中的问题;当然,我考虑了给@FlorianSchaetz的建议。我恳请你帮助我。所以,我有测试类:@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes=AppConfig.class,loader=AnnotationConfigContextLoader.class)@Transactionalpub

java - Spring 事务不工作 + JAX WS + JDBC

我对这个问题有点生气。让我们检查是否有人实现了类似的东西。我有一个实现了8WS的Java8Web应用程序。其中一些WS,通过JDBCTemplate进行插入和更新(由于性能需要,Hibernate不是一个选择),如果执行崩溃并出现异常,我需要它们回滚。我在spring应用程序上下文文件(Tomcat的server.xml/context.xml中的jndi资源)中有以下数据源和事务管理器配置:另一方面,我有一个到数据库DBcontroller.class的唯一访问点,它有一个用于插入、删除和更新的通用方法:privateNamedParameterJdbcTemplatejdbcTem

Java 并发 : lock effiency

我的程序有100个线程。每个线程都这样做:1)如果arrayList为空,则向其添加具有特定属性的元素2)如果arrayList不为空,遍历arrayList中找到的元素,如果找到合适的元素(匹配某些属性),获取并移除arrayList这里的问题是,当一个线程遍历arrayList时,其他99个线程正在等待arrayList上的锁。如果我希望所有100个线程都在无锁条件下工作,您会给我什么建议?所以他们都有工作要做?谢谢 最佳答案 你看过sharedvsexclusive了吗?锁定?您可以在列表上使用共享锁,然后在列表元素上使用“已

java - 无法获取 logback 和 mysql 连接

我像这样使用logback和mysql:com.mysql.jdbc.Driver${jdbc.url}${jdbc.username}${jdbc.password}但是我得到:11:51:45,851|-WARNinch.qos.logback.core.db.DataSourceConnectionSource@4c1be833-Couldnotgetaconnectiontodiscoverthedialecttouse.java.sql.SQLException:Connectionscouldnotbeacquiredfromtheunderlyingdatabase!at

java - XA/JTA 事务 : JMS message arrives before DB changes are visible

上下文是:生产者(JTA事务PT)正在向JMS队列发送消息并进行数据库更新;consumer(JTAtransactionCT)在同一个队列上监听并在收到消息时读取DB;应用服务器-WebLogic,数据库-Oracle。我观察到,有时CT(还?)无法看到PT的数据库更改,如果已收到相应的JMS消息(PTpromise了吗?)。似乎JTA不能保证这种一致性(这在JurgenHoller的演讲“TransactionChoicesforPerformance”中也得到了证实)。避免此类问题的最佳方法是什么(明显的除外-不使用JTA)?谢谢。 最佳答案

java - 服务层和 DAO 层中的 Spring 事务

在我的示例中,我有一个Hibernate实体和一个DAO。@Entity@Table(name="myEntity")publicclassMyEntity{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="id")privatelongid;@Column(name="action")privateStringactionName;}...................@Repository("myDAO")@Transactional(propagation=Propagation.REQUIRED