Is this use of PreparedStatements in a Thread in JAVA correct?

Posted by Gormcito on Stack Overflow See other posts from Stack Overflow or by Gormcito
Published on 2010-04-26T12:31:08Z Indexed on 2010/04/26 12:33 UTC
Read the original article Hit count: 189

Filed under:
|
|
|

I'm still an undergrad just working part time and so I'm always trying to be aware of better ways to do things. Recently I had to write a program for work where the main thread of the program would spawn "task" threads (for each db "task" record) which would perform some operations and then update the record to say that it has finished. Therefore I needed a database connection object and PreparedStatement objects in or available to the ThreadedTask objects.

This is roughly what I ended up writing, is creating a PreparedStatement object per thread a waste? I thought static PreparedStatments could create race conditions...
Thread A stmt.setInt();
Thread B stmt.setInt();
Thread A stmt.execute();
Thread B stmt.execute();
A´s version never gets execed..

Is this thread safe? Is creating and destroying PreparedStatement objects that are always the same not a huge waste?

public class ThreadedTask implements runnable {
    private final PreparedStatement taskCompleteStmt;

    public ThreadedTask() {
        //...
        taskCompleteStmt = Main.db.prepareStatement(...);
    }

    public run() {
        //...
        taskCompleteStmt.executeUpdate();
    }
}

public class Main {
    public static final db = DriverManager.getConnection(...);
}

© Stack Overflow or respective owner

Related posts about java

Related posts about sql