为了账号安全,请及时绑定邮箱和手机立即绑定

Mysql 与 ExecutorService

Mysql 与 ExecutorService

萧十郎 2021-12-18 15:51:27
我想使用 Executors 来加快将可用数据列表导入数据库的速度            public static void main(String[] args) {            methodOpenDatabaseConnection();                        ExecutorService newFixedThreadPool = Executors.newScheduledThreadPool(100);                        for (long i = 0; i < 1000; i++) {                            newFixedThreadPool.execute(new Runnable() {                                @Override                                public void run( {methodSaveDataToDatabaseMysql();                                }                            });                        }                       newFixedThreadPool.shutdown();                       newFixedThreadPool.shutdown();                       newFixedThreadPool.awaitTermination(60, TimeUnit.SECONDS);                       if (newFixedThreadPool.isShutdown()) {                          methodCloseConnectionDatabase();                      }                    }        public void methodSaveDataToDatabaseMysql() {                try {                    preparedStatement = connection.prepareStatement("INSERT INTO `demo`"                            + " (`name`,`name2`,`name3`) VALUES (?,?,?)");                    preparedStatement.setString(1, "name1");                    preparedStatement.setString(2, "name2");                    preparedStatement.setString(3, "name3");                    preparedStatement.executeUpdate();                } catch (SQLException ex) {                    Logger.getLogger(WebsiteResourcesImpl1.class.getName()).log(Level.SEVERE, null, ex);                }            }我觉得save语句没有问题,因为在ExecutorService中还是可以成功保存数据但是不稳定
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

基于此代码,preparedStatement = connection.prepareStatement...preparedStatement不是线程安全的。

考虑使其成为methodSaveDataToDatabaseMysql方法的本地


查看完整回答
反对 回复 2021-12-18
  • 1 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信