Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有ExecutorService的Mysql_Java_Mysql_Executorservice_Executor - Fatal编程技术网

Java 带有ExecutorService的Mysql

Java 带有ExecutorService的Mysql,java,mysql,executorservice,executor,Java,Mysql,Executorservice,Executor,我想使用Executors加速将可用数据列表导入数据库 public static void main(String[] args) { methodOpenDatabaseConnection(); ExecutorService newFixedThreadPool = Executors.newScheduledThreadPool(100);

我想使用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中并不稳定,因为基于此代码preparedStatement=connection.prepareStatement。。。那么preparedStatement不是线程安全的


考虑将其设置为methodSaveDataToDatabaseMysql方法的本地方法

我猜在这段代码中methodSaveDataToDatabaseMysqllong1;您没有设置所有的参数,但由于您没有给出此代码,因此无法提供进一步的帮助。我的遗漏,我已经更新了我的问题,希望您能提供帮助基于此代码preparedStatement=connection.preparedStatement然后preparedStatement不是线程安全的。谢谢你们两位对我的问题感兴趣。@ScaryWombat我遵循了您的建议,我成功了,太棒了
java.sql.SQLException: No value specified for parameter 3
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:569)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:537)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:527)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:512)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:480)
    at com.mysql.cj.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2159)