zoukankan      html  css  js  c++  java
  • java多线程学习

    使用springMVC的事务处理多线程。

     最近在做项目肚饿时候,用到多线程:批量迁移历史数据,(即将多个主机的数据文件,移动到另一台主机上,其中要使用到多线程)

    模仿前辈的程序,把业务层实现后,开始进行事务处理。

    使用DataSourceTransactionManager 类,
    (1)在多线程的run方法中,创建事物状态,

    DefaultTransactionDefinition def = new DefaultTransactionDefinition();// 获得事务状态
    TransactionStatus status = transactionManager.getTransaction(def); 

    (2)在最后进行transactionManager.commit(status);

    (3)期间若程序出现错误,会抛出异常,从而触发事务回滚。

    throw new RuntimeException(e);

    (4)在进行了业务层的事务处理后,还要对Dao层(数据库查询时)进行事务处理。(否则会出现错误,即主线程提前结束,多线程不能正常结束)

    @Transactional(readOnly=true)

    在上网查资料时看到一句话,有理:多线程关键是协调。


    (5)多线程,有的主线程提前结束,而多线程还没有结束, 解决方法:

    让主线程sleep()一段时间。但若sleep的时间不合理,会影响性能。

  • 相关阅读:
    mysql导sql脚本
    oracle导sql脚本
    基于jdk proxy的动态代理模式
    vue组件之组件的生命周期
    vue组件之组件间的通信
    python-爬虫scrapy框架安装及基本使用
    mongdb的使用
    python-爬虫 多线程爬虫
    python-爬虫 爬虫利器BeautifulSoup
    python-爬虫lxml库
  • 原文地址:https://www.cnblogs.com/yeemi/p/7470183.html
Copyright © 2011-2022 走看看