kh945926945 2017-05-24 08:46 采纳率: 0%
浏览 1648

hibernate多线程插入数据无法进行

`

public void addStockHistoryData() {

    StockCrawler sc = new StockCrawler();

    ArrayList<String> codes = getAllStockCodes();

    ExecutorService pool = Executors.newFixedThreadPool(100);

    CompletionService<ArrayList<StockHistoryData>> cs = new ExecutorCompletionService<ArrayList<StockHistoryData>>(
            pool);

    for (int i = codes.size() - 1; i > 800; i--) {

        String code = codes.get(i);

        cs.submit(new Callable<ArrayList<StockHistoryData>>() {

            @Override

            public ArrayList<StockHistoryData> call() throws Exception {

                System.out.println("getting " + code);

                ArrayList<StockHistoryData> sd = sc.getHistoryData(code, "300");

                Session s = sessionFactory.openSession();

                s.beginTransaction();

                for (StockHistoryData d : sd) {

                    s.saveOrUpdate(d);

                }

                s.getTransaction().commit();

                s.close();

                return sd;

            }

        });
    }

`
这是多线程存数据的代码段,hibernate的show_sql设置为true,但是看到打印到某一句就停止执行了,也不报异常,怀疑是出现了死锁,但是不知道是什么操作可能导致这个问题?该怎么解决呢?

  • 写回答

1条回答 默认 最新

  • ZzzzzBW 2017-05-24 08:51
    关注

    打印到哪一句停止执行了?
    这个开启了事务,在事务执行的步骤中就算多线程也要等事务完成第二个线程才能进入事务啊

    评论

报告相同问题?

悬赏问题

  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算